anchor.diff:  %%% Redis cluster move code
   %%--------------------------------------------------------------------
   
  -%% Attempt to create new shard maps with new redo processes. Catch
  -%% errors and destroy any created processes.
  -prepare_new_shard_info(NewShardInfo) ->
  -    {links, OldLinks} = process_info(self(), links),
  -    try
  -        new_shard_info(NewShardInfo)
  -    catch
  -        C:E ->
  -            {links, NewLinks} = process_info(self(), links),
  -            %% Clean up any new processes we started
  -            [ erlang:exit(P, kill)
  -              || P <- (NewLinks -- OldLinks),
  -                 P > self()],
  -            delete_new_shard_info(),
  -            {error, {C,E}}
  -    end.
  -
  -delete_new_shard_info() ->
  -    logplex_shard_info:delete(?NEW_READ_MAP),
  -    logplex_shard_info:delete(?NEW_WRITE_MAP),
  -    ok.
  +prepare_new_shard_info(_Maps0, NewShardInfo) ->
  +    new_shard_info(NewShardInfo).
   
   backup_shard_info() ->
       logplex_shard_info:copy(?CURRENT_WRITE_MAP, ?BACKUP_WRITE_MAP),
  
positive.code: 
      ets:new(logplex_shard_info, [protected, set, named_table]),
  
      Maps = populate_info_table(Urls),
  
      {ok, #state{urls=Urls, maps=Maps}}.
  
  %%--------------------------------------------------------------------
  %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
  
negative.code: 
  new_shard_info(NewUrls) ->
      populate_info_table(?NEW_READ_MAP, ?NEW_WRITE_MAP,
                          NewUrls).
  
  -spec prepare_shard_urls(string()) -> [string()]|[].
  prepare_shard_urls(ShardUrls) ->
  