riak_core_node_watcher should tolerate death of riak_core_ring_events #343

slfritchie opened this Issue Jun 24, 2013 · 1 comment


None yet

2 participants

  1. {links, L1} = process_info(whereis(riak_core_ring_events), links).
  2. exit(whereis(riak_core_ring_events), kill).
  3. {links, L2} = process_info(whereis(riak_core_ring_events), links).

length(L1) /= length(L2). After step 2, riak_core_node_watcher's link is not in the L2 list.

workaround: exit(whereis(riak_core_node_watcher), kill), which will restart the node watcher, which will in turn re-link to riak_core_ring_events.

@slfritchie slfritchie added a commit that referenced this issue Sep 27, 2013
@slfritchie slfritchie Fixes #343
Before this patch, the riak_core_node_watcher.erl code assumed
that if the riak_core_ring_events proc (a gen_event server) died,
then a {gen_event_EXIT,_,_} message would be sent.  However, that
assumption is not correct.  If it dies, we get a regular {EXIT,_,_}

Tested by repeated use of alternating:
* exit(whereis(riak_core_ring_events), kill).

... and looking at the length of the links list
of process_info(whereis(riak_core_ring_events), links) -- it should
be three, not two.

marking as 2.0.1 for the same reasons as #399 (comment)

@jrwest jrwest added this to the 2.0.1 milestone Mar 24, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment