anchor.diff:                       {VBucket, State} <- Pairs],
               {ok, RV, []};
           _ ->
  -            ?log_error("Failed to query vbucket states from some nodes:~n~p", [Failures]),
  -
  -            BadNodes = [N || {N, _} <- Failures],
  -            {ok, [], BadNodes}
  +            ?log_error("Failed to query vbucket states from some nodes:~n~p",
  +                       [Failures]),
  +            {ok, [], Failures}
       end.
   
   -spec mark_bucket_warmed(Bucket::bucket_name(), [node()]) -> ok | {error, [node()], list()}.
  
positive.code:               NodePids = [{Node, proc_lib:spawn_link(
                                     fun () ->
                                             {ok, TRef} = timer2:kill_after(WaitTimeout),
                                             RV = query_vbucket_states_loop(Node, Bucket),
                                             Me ! {'EXIT', self(), {Ref, RV}},
                                             %% doing cancel is quite
                                             %% important. kill_after is
  
negative.code: query_states(Bucket, Nodes, undefined) ->
      query_states(Bucket, Nodes, ?WAIT_FOR_MEMCACHED_TIMEOUT);
  query_states(Bucket, Nodes, ReadynessWaitTimeout) ->
      {ok, States, Failures} = query_states_details(Bucket, Nodes, ReadynessWaitTimeout),
      BadNodes = [N || {N, _} <- Failures],
      {ok, States, BadNodes}.
  
  -spec query_states_details(bucket_name(), [node()], undefined | pos_integer()) ->
                                    {ok, [{node(), vbucket_id(), vbucket_state()}],
                                     [{node(), term()}]}.
  query_states_details(Bucket, Nodes, undefined) ->
      query_states_details(Bucket, Nodes, ?WAIT_FOR_MEMCACHED_TIMEOUT);
  query_states_details(Bucket, Nodes, ReadynessWaitTimeout) ->
      NodeRVs = wait_for_memcached(Nodes, Bucket, ReadynessWaitTimeout),
      Failures = [{N, R} || {N, R} <- NodeRVs,
                            case R of
  