anchor.diff:          [] ->
               ok;
           _ ->
  -            RootLeader = riak_ensemble_manager:rleader_pid(),
  -            spawn(fun() ->
  -                          riak_ensemble_peer:update_members(RootLeader, Changes, 10000)
  -                  end),
  +            Self = self(),
  +            spawn_link(fun() ->
  +                               async_bootstrap_members(Self, Changes)
  +                       end),
               ok
       end.
  +
  +async_bootstrap_members(Claimant, Changes) ->
  +    RootLeader = riak_ensemble_manager:rleader_pid(),
  +    case riak_ensemble_peer:update_members(RootLeader, Changes, 10000) of
  +        ok ->
  +            ok;
  +        _ ->
  +            reset_ring_id(Claimant),
  +            ok
  +    end.
  +
  +%% Reset last_ring_id, ensuring future tick re-examines the ring even if the
  +%% ring has not changed.
  +reset_ring_id(Pid) ->
  +    Pid ! reset_ring_id.
   
   %% =========================================================================
   %% Claimant rebalance/reassign logic
  
positive.code:     State2 = tick(State),
      {noreply, State2};
  
  handle_info(_Info, State) ->
      {noreply, State}.
  
  
negative.code:     end.
  
  bootstrap_root_ensemble(Ring) ->
      bootstrap_members(Ring),
      ok.
  
  