Skip to content

Commit

Permalink
use first index instead of hd(preflist) to bin inputs
Browse files Browse the repository at this point in the history
saves garbage, comparison time
  • Loading branch information
beerriot committed May 17, 2012
1 parent bc78433 commit 3156f93
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/riak_pipe_vnode.erl
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -228,16 +228,18 @@ queue_work(Fitting, Input, Timeout) ->
{[term()], [qerror()]}. {[term()], [qerror()]}.
queue_work_list(Fitting, Inputs) -> queue_work_list(Fitting, Inputs) ->
InputBins = bin_inputs(Fitting, Inputs), InputBins = bin_inputs(Fitting, Inputs),
Results = [ queue_work_list(Fitting, Bin, [], work_hash(Fitting, I)) Results = [ queue_work_list(Fitting, Bin, [],
work_hash(Fitting, I))
|| {_, [I|_]=Bin} <- InputBins ], || {_, [I|_]=Bin} <- InputBins ],
{Leftover, Errors} = lists:unzip(Results), {Leftover, Errors} = lists:unzip(Results),
{lists:append(Leftover), lists:append(Errors)}. {lists:append(Leftover), lists:append(Errors)}.


bin_inputs(Fitting, Inputs) -> bin_inputs(Fitting, Inputs) ->
{ok, Ring} = riak_core_ring_manager:get_my_ring(),
lists:foldr( lists:foldr(
fun(I, Acc) -> fun(I, Acc) ->
P = remaining_preflist( P = riak_core_ring:responsible_index(
I, work_hash(Fitting, I), 1, []), work_hash(Fitting, I), Ring),
case lists:keytake(P, 1, Acc) of case lists:keytake(P, 1, Acc) of
{value, {_, RestI}, NewAcc} -> {value, {_, RestI}, NewAcc} ->
[{P,[I|RestI]}|NewAcc]; [{P,[I|RestI]}|NewAcc];
Expand Down

0 comments on commit 3156f93

Please sign in to comment.