anchor.diff:      Chain = lists:duplicate(proplists:get_value(num_replicas, BucketConfig) + 1,
                               undefined),
       Map1 = lists:duplicate(proplists:get_value(num_vbuckets, BucketConfig),
  -                          Chain),
  +                           Chain),
       Servers = proplists:get_value(servers, BucketConfig),
       generate_vbucket_map(Map1, Servers, BucketConfig).
   
  
positive.code: 
  build_delta_recovery_buckets(AllNodes, DeltaNodes, AllBucketConfigs) ->
      MembaseBucketConfigs = [{Bucket, Conf} || {Bucket, Conf} <- AllBucketConfigs,
                                   proplists:get_value(type, Conf) =:= membase],
  
      do_build_delta_recovery_buckets(AllNodes, DeltaNodes, MembaseBucketConfigs).
  
  
negative.code:     proc_lib:start_link(
        erlang, apply,
        [fun () ->
                 BucketConfigs = ns_bucket:get_buckets(),
                 DeltaRecoveryBuckets =
                     build_delta_recovery_buckets(KeepNodes, DeltaNodes, BucketConfigs),
  
                 case RequireDeltaRecovery =:= true andalso
                     DeltaNodes =/= [] andalso DeltaRecoveryBuckets =:= [] of
                     true ->
                         proc_lib:init_ack({error, delta_recovery_not_possible});
                     false ->
                         proc_lib:init_ack({ok, self()}),
  
                         master_activity_events:note_rebalance_start(
                           self(), KeepNodes, EjectNodes, FailedNodes, DeltaNodes),
  
                         ok = apply_delta_recovery_buckets(DeltaRecoveryBuckets, DeltaNodes),
                         ns_cluster_membership:activate(KeepNodes),
  
                         rebalance(KeepNodes, EjectNodes, FailedNodes,
                                   BucketConfigs, DeltaRecoveryBuckets)
                 end
         end, []]).
  
  rebalance(KeepNodes, EjectNodesAll, FailedNodesAll,
            BucketConfigs, DeltaRecoveryBuckets) ->
  