Skip to content
This repository has been archived by the owner on Sep 19, 2019. It is now read-only.

Commit

Permalink
Tolerate node failures in reduce views w/ zero rows
Browse files Browse the repository at this point in the history
Merge branch 12052-zero-row-reduce-hang by squashed commit of:

commit 4dc09070fbc90186987327e07d7515e35886c18f
commit 7b62ea72a5614d2123aa7798bba3dd10f6141230

Thanks Bob Dionne for the test case.

BugzID: 12052
  • Loading branch information
kocolosk committed Apr 20, 2011
1 parent 4896296 commit 2747ead
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/fabric_view_reduce.erl
Expand Up @@ -97,5 +97,18 @@ handle_message(#view_row{key=Key} = Row, {Worker, From}, State) ->
end;

handle_message(complete, Worker, State) ->
Counters = fabric_dict:update_counter(Worker, 1, State#collector.counters),
fabric_view:maybe_send_row(State#collector{counters = Counters}).
C1 = fabric_dict:update_counter(Worker, 1, State#collector.counters),
C2 = fabric_view:remove_overlapping_shards(Worker, C1),
fabric_view:maybe_send_row(State#collector{counters = C2}).

complete_worker_test() ->
Shards =
mem3_util:create_partition_map("foo",3,3,[node(),node(),node()]),
Workers = lists:map(fun(#shard{} = Shard) ->
Ref = make_ref(),
Shard#shard{ref = Ref}
end,
Shards),
State = #collector{counters=fabric_dict:init(Workers,0)},
{ok, NewState} = handle_message(complete, lists:nth(2,Workers), State),
?assertEqual(orddict:size(NewState#collector.counters),length(Workers) - 2).

0 comments on commit 2747ead

Please sign in to comment.