anchor.diff:  %% run locally per-node, collects information about this node for the session
   get_my_info () ->
       {Total,Used,_}=memsup:get_memory_data(),
  +    {ok,Handoffs}=riak_core_handoff_manager:handoff_status(),
   
       %% construct the member information for this node
       #member_info{ node=node(),
  
positive.code:         }).
  
  %% hack: periodically update the ring with itself
  -define(INTERVAL, 3000).
  
  %% delay used after a ring update
  -define(UPDATE_TICK_TIMEOUT, 1000).
  
  %% ===================================================================
  %% Public API
  
negative.code:                   mem_total=Total,
                    mem_used=Used,
                    mem_erlang=proplists:get_value(total,erlang:memory()),
                    vnodes=riak_core_vnode_manager:all_vnodes(),
                    handoffs=[Handoff || {Handoff,outbound,_,_} <- Handoffs]
                    }.
  
  %% each node knows about its set of handoffs, collect them all together
  get_all_handoffs(#state{nodes=Members}) ->
      lists:flatten([HS || #member_info{handoffs=HS} <- Members]).
  
  %% return a proplist of details for a given index
  get_partition_details (#state{services=Services,ring=Ring},{Idx,Owner},HS) ->
      Statuses=[get_vnode_status(Service,Ring,Idx) || Service <- Services],
      Handoffs=[{M,N} || #handoff{module=M,index=I,node=N} <- HS, I==Idx],
      #partition_info{ index=Idx,
                       partition=partition_index(Ring,Idx),
                       owner=Owner,
  