anchor.diff:      {noreply,State}.
   
   
  -handle_info(inactivity_timeout, State=#state{ring_changed_time=Then}) ->
  -    DeltaUS = erlang:max(0, timer:now_diff(os:timestamp(), Then)),
  -    DeltaMS = DeltaUS div 1000,
  -    case DeltaMS >= ?PROMOTE_TIMEOUT of
  -        true ->
  +handle_info(inactivity_timeout, State) ->
  +    case is_stable_ring(State) of
  +        {true,DeltaMS} ->
               lager:debug("Promoting ring after ~p", [DeltaMS]),
               promote_ring(),
               State2 = State#state{inactivity_timer=undefined},
               {noreply, State2};
  -        false ->
  +        {false,DeltaMS} ->
               Remaining = ?PROMOTE_TIMEOUT - DeltaMS,
               State2 = set_timer(Remaining, State),
               {noreply, State2}
  
positive.code: handle_call({set_cluster_name, Name}, _From, State=#state{raw_ring=Ring}) ->
      NewRing = riak_core_ring:set_cluster_name(Ring, Name),
      State2 = prune_write_notify_ring(NewRing, State),
      {reply, ok, State2}.
  
  handle_cast(stop, State) ->
      {stop,normal,State};
  
negative.code: 
  set_cluster_name(Name) ->
      gen_server:call(?MODULE, {set_cluster_name, Name}, infinity).
  
  is_stable_ring() ->
      gen_server:call(?MODULE, is_stable_ring, infinity).
  
  %% @doc Exposed for support/debug purposes. Forces the node to change its
  %%      ring in a manner that will trigger reconciliation on gossip.
  