The pipe_verify_handoff_blocking test in basho/riak_test#154 demonstrated
that the monitor used by riak_pipe_vnode:queue_work_send may fire while
handoff is taking place. This situation is further described in
63.
This PR addresses the problem by first checking whether the Reason
for the vnode's exit was normal. If it was not normal, the
vnode_down error is returned as before. If it was normal, then it is
assumed that handoff happened, and the monitor is moved to the new
vnode, as indicated by riak_core_ring:next_owner/2.
This PR targets bwf-riak_test, because commits in that branch are needed to run the riak_test proof, but I wanted this PR to be clear about what it was.
The
pipe_verify_handoff_blocking
test in basho/riak_test#154 demonstrated that the monitor used byriak_pipe_vnode:queue_work_send
may fire while handoff is taking place. This situation is further described in63.
This PR addresses the problem by first checking whether the Reason for the vnode's exit was
normal
. If it was not normal, thevnode_down
error is returned as before. If it was normal, then it is assumed that handoff happened, and the monitor is moved to the new vnode, as indicated byriak_core_ring:next_owner/2
.This PR targets bwf-riak_test, because commits in that branch are needed to run the riak_test proof, but I wanted this PR to be clear about what it was.