Make vnode check for existing handoff before starting another #250
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change riak_core_vnode to keep track of the handoff sender pid and not initiate a new handoff if an existing handoff is already running. In practice, this is not necessary as the handoff manager ensures that only one handoff is running per source/target pair. This change is an optimization to avoid additional work that is potentially expensive on some backends.
Note: This is tangentially related to basho/riak_kv#423 as one of the blocking scenarios was "double handoff". The second handoff attempt would call
bitcask:is_empty
and therefore trigger the reported blocking behavior. That issue is resolved by the Bitcask changes associated with the issue, but changing handoff behavior to not unnecessarily attempt to handoff is a reasonable optimization to do regardless.