anchor.diff:  finish_handoff(State=#state{mod=Mod, 
                               modstate=ModState,
                               index=Idx,
  -                            handoff_node=HN}) ->
  +                            handoff_node=HN,
  +                            pool_pid=Pool}) ->
       case riak_core_gossip:finish_handoff(Idx, node(), HN, Mod) of
           continue ->
               continue(State#state{handoff_node=none});
           Res when Res == forward; Res == shutdown ->
               %% Have to issue the delete now.  Once unregistered the
  -            %% vnode master will spin up a new vnode on demand.  
  +            %% vnode master will spin up a new vnode on demand.
  +            %% Shutdown the async pool beforehand, don't want callbacks
  +            %% running on non-existant data.
  +            case is_pid(Pool) of
  +                true ->
  +                    %% state.pool_pid will be cleaned up by handle_info message.
  +                    riak_core_vnode_worker_pool:shutdown_pool(Pool, 60000);
  +                _ ->
  +                    ok
  +            end,
               {ok, NewModState} = Mod:delete(ModState),
               lager:debug("~p ~p vnode finished handoff and deleted.",
                           [Idx, Mod]),
  
positive.code:             lager:error("~p ~p handoff crashed ~p\n", [Index, Mod, Reason])
      end,
      continue(State#state{handoff_pid=undefined});
  
  handle_info({'EXIT', Pid, Reason}, StateName, State=#state{mod=Mod,modstate=ModState}) ->
      %% A linked processes has died so use the
  
negative.code:             {noreply,NewModState} ->
                  {next_state, StateName, State#state{modstate=NewModState},
                      State#state.inactivity_timeout};
              {stop, Reason1, NewModState} ->
                   {stop, Reason1, State#state{modstate=NewModState}}
          end
      catch
          _ErrorType:undef ->
  