basho/riak_pipe — pull request #76 by jrwest (2013-05-09 22:37:24+00:00)
Title: limited support for ring resizing

Provides ability for clusters using riak_pipe to use ring
resizing. Ultimately, this is a hack that includes just enough support
for clusters to successfully transition between the old and new ring
without riak_pipe getting in the way. It does this by lying to
riak_core's handoff subsystem during resize. The lie it tells is that
even when it has outstanding work/queue items it will report that it
is empty. This will allow the pipe vnode to continue processing work
in the old ring since vnodes are not deleted and shutdown until the
new ring is installed. This does, however, come with the drawback that
work that is in-flight when the new ring is installed has undefined
behaviour. The work may complete or may be terminated by the cleanup
processes that follows the installation of the new ring.

Better support for pipe has several challenges. Some can be easily
addressed through extra support in riak_core but the fundamental
challenge is that riak_pipe hands off worker archives. In a larger or
smaller ring parts of those archrives would be owned by new
partitions which would force those archives to be "re-opened" and
disseminated during handoff.