anchor.diff:  %% Description: Handling call messages
   %% @hidden
   %%--------------------------------------------------------------------
  +handle_call({register_worker, {WorkerType, Url, Reader}}, {From, _Ref}, State = #state{ maps=Maps }) ->
  +    {WorkerType, Ring} = lists:keyfind(WorkerType, 1, Maps),
  +    Ring1 = case lists:keyfind(Url, 1, Ring) of
  +               {Url, {async, From}} ->
  +                   lists:keyreplace(Url, 1, Ring, {Url, Reader});
  +               _ -> Ring
  +           end,
  +    Ring2 = lists:map(fun ({Frag, {async, _}}) ->
  +                              {Frag, undefined};
  +                          ({_Frag, Pool}=Mapping) when is_pid(Pool) ->
  +                              Mapping
  +                      end, Ring1),
  +    io:format("RING2 ~p~n", [Ring2]),
  +    {ok, Map, Interval} = redis_shard:generate_map_and_interval(Ring2),
  +    io:format("~p ~p ~p~n", [WorkerType, Map, Interval]),
  +    logplex_shard_info:save(WorkerType, Map, Interval),
  +    Maps1 = lists:keyreplace(WorkerType, 1, Maps, {WorkerType, Ring1}),
  +    {reply, ok, State#state{ maps=Maps1 }};
  +
   handle_call({commit, new_shard_info}, _From, State) ->
       backup_shard_info(),
       try
  
positive.code: -define(CURRENT_WRITE_MAP, logplex_redis_buffer_map).
  -define(BACKUP_WRITE_MAP, backup_logplex_redis_buffer_map).
  
  -record(state, {urls}).
  
  -define(TIMEOUT, 30000).
  
  
negative.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} |
  