Profiling with DTrace on Solaris suggests that ets:match() is causing a much higher than necessary lock contention rate within the Erlang R14B03 and R14B04 VMs. Eliminating ets:match() in the riak_core and riak_kv applications is substantial when using Pthread locking instead of Ericsson's hand-tuned locking (which is the default). The results are more ambiguous when the default locking strategy is used.
…vnode. Corrects the handle_info return when the vnode is forwarding and has deleted the state. Fixes: bz://1227
…aller to choose whether we round up or down. AZ895
Fix BZ1242. Change riak_core_vnode to use get_raw_ring instead of get_my_ring, because the vector clock for get_my_ring may have local modifications that prevent riak_core_ring:ring_ready from returning true for the ring, even if the base raw ring was ready. Updated core_vnode_eqc to start the ring manager in order to retrieve the raw ring during tests.
The new cluster membership code switched to forwarding once handoff is complete. Without this change the vnode starts forwarding while the new owner is still processing buffered TCP data.
Change ring_ready to wait on exiting nodes in addition to valid and leaving nodes. This ensure the ring converges on a node's intent to leave before the node leaves the cluster. Change claimant from moving itself from exiting to invalid. Instead, after the claimant moves to exiting, a new claimant will emerge that will move the previous claimant to invalid and initiate shutdown.
The caller wraps the state with the next state information.