anchor.diff:  
   get_partitions () ->
       gen_server:call(?MODULE,get_partitions,infinity).
  +
  +force_update () ->
  +    gen_server:cast(?MODULE,update_ring,infinity).
   
   %% ===================================================================
   %% gen_server callbacks
  
positive.code:           ring        :: riak_core_ring:riak_core_ring(),
            partitions  :: [tuple()],
            nodes       :: [tuple()],
            update      :: reference()
          }).
  
  %% hack: periodically update the ring with itself
  -define(INTERVAL, 3000).
  
  %% delay used after a ring update
  -define(RING_UPDATE_DELAY, 500).
  
  %% ===================================================================
  %% Public API
  
negative.code: 
  %% update the ring state, also update nodes and partitions
  update_ring (State,Ring) ->
      erlang:send_after(?UPDATE_TICK_TIMEOUT,self(),clear_update_tick),
      NodeState=update_nodes(State#state{update_tick=true,ring=Ring}),
      NewState=update_partitions(NodeState),
      rev_state(NewState).
  
  