Skip to content

Commit

Permalink
Merge pull request #651 from basho/rdb/kv-gh1046
Browse files Browse the repository at this point in the history
Allow the vnode to change/provide the request to be forwarded

Reviewed-by: slfritchie,slfritchie
  • Loading branch information
borshop committed Nov 19, 2014
2 parents c769123 + 6525a03 commit ca54001
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 17 deletions.
10 changes: 7 additions & 3 deletions Makefile
Expand Up @@ -31,19 +31,23 @@ pulse:
docs: deps
./rebar skip_deps=true doc

build_plt: compile
old_build_plt: compile
dialyzer --build_plt --output_plt $(COMBO_PLT) --apps $(APPS) \
deps/*/ebin

check_plt: compile
old_check_plt: compile
dialyzer --check_plt --plt $(COMBO_PLT) --apps $(APPS) \
deps/*/ebin

dialyzer: compile
old_dialyzer: compile
@echo
@echo Use "'make check_plt'" to check PLT prior to using this target.
@echo Use "'make build_plt'" to build PLT prior to using this target.
@echo
dialyzer --plt $(COMBO_PLT) ebin

xref:
@echo "Xref not supported for 1.4 branch. Sorry buildbot. (skipping)"

dialyzer:
@echo "Dialyzer not supported for 1.4 branch. Sorry buildbot. (skipping)"
1 change: 1 addition & 0 deletions erlang_version
@@ -0,0 +1 @@
r15b01
2 changes: 1 addition & 1 deletion src/riak_core_stat_cache.erl
Expand Up @@ -272,7 +272,7 @@ cache_test_() ->
{setup,
fun() ->
folsom:start(),
[meck:new(Mock, [passthrough]) || Mock <- ?MOCKS],
[meck:new(Mock, [passthrough, non_strict]) || Mock <- ?MOCKS],
riak_core_stat_cache:start_link()
end,
fun(_) ->
Expand Down
33 changes: 20 additions & 13 deletions src/riak_core_vnode.erl
Expand Up @@ -367,24 +367,31 @@ vnode_handoff_command(Sender, Request, ForwardTo,
riak_core_vnode_worker_pool:handle_work(Pool, Work, From),
continue(State, NewModState);
{forward, NewModState} ->
case HOType of
%% resize op and transfer ongoing
resize_transfer -> vnode_forward(resize, ForwardTo, Sender,
{resize_forward, Request}, State);
%% resize op ongoing, no resize transfer ongoing, arrive here
%% via forward_or_vnode_command
undefined -> vnode_forward(resize, ForwardTo, Sender,
{resize_forward, Request}, State);
%% normal explicit forwarding during owhership transfer
_ -> vnode_forward(explicit, HOTarget, Sender, Request, State)
end,
forward_request(HOType, Request, HOTarget, ForwardTo, Sender, State),
continue(State, NewModState);
%% allow the vnode to change the request to be forwarded
{forward, NewReq, NewModState} ->
forward_request(HOType, NewReq, HOTarget, ForwardTo, Sender, State),
continue(State, NewModState);
{drop, NewModState} ->
continue(State, NewModState);
{stop, Reason, NewModState} ->
{stop, Reason, State#state{modstate=NewModState}}
end.

%% @private wrap the request for resize forwards, and use the resize
%% target.
forward_request(resize_transfer, Request, _HOTarget, ResizeTarget, Sender, State) ->
%% resize op and transfer ongoing
vnode_forward(resize, ResizeTarget, Sender, {resize_forward, Request}, State);
forward_request(undefined, Request, _HOTarget, ResizeTarget, Sender, State) ->
%% resize op ongoing, no resize transfer ongoing, arrive here
%% via forward_or_vnode_command
vnode_forward(resize, ResizeTarget, Sender, {resize_forward, Request}, State);
forward_request(_, Request, HOTarget, _ResizeTarget, Sender, State) ->
%% normal explicit forwarding during owhership transfer
vnode_forward(explicit, HOTarget, Sender, Request, State).

vnode_forward(Type, ForwardTo, Sender, Request, State) ->
lager:debug("Forwarding (~p) {~p,~p} -> ~p~n",
[Type, State#state.index, node(), ForwardTo]),
Expand Down Expand Up @@ -988,10 +995,10 @@ current_state(Pid) ->
gen_fsm:sync_send_all_state_event(Pid, current_state).

pool_death_test() ->
meck:new(test_vnode),
meck:new(test_vnode, [non_strict]),
meck:expect(test_vnode, init, fun(_) -> {ok, [], [{pool, test_pool_mod, 1, []}]} end),
meck:expect(test_vnode, terminate, fun(_, _) -> normal end),
meck:new(test_pool_mod),
meck:new(test_pool_mod, [non_strict]),
meck:expect(test_pool_mod, init_worker, fun(_, _, _) -> {ok, []} end),

{ok, Pid} = ?MODULE:test_link(test_vnode, 0),
Expand Down

0 comments on commit ca54001

Please sign in to comment.