Fix sync_spawn_command hang triggered by bug in vnode proxy overload handling #884
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.
If we call
riak_core_vnode_master:sync_spawn_command
, it ends up sendinga gen_event all-state event to the proxy for forwarding. However, in
handle_overload
, the old code only had case clauses for'$gen_event'
andnot
'$gen_all_state_event'
. This means the event would be passed tohandle_overload_info
instead ofhandle_overload_request
, which wouldlikely skip the vnode callback code that sends a response.
In Riak this meant that certain operations would hang during overload,
since the caller of
sync_spawn_command
would never get a response.(This situation was made worse by the fact that the call is being done
with an
infinity
timeout, but that's an issue we'll have to address someother time.)