anchor.diff:                      end,
       NewState = State#concurrency_throttle_state{target_load = NewTargetLoad,
                                                   waiting_pool = NewWaitingPool},
  -    ?xdcr_debug("no token available (total tokens:~p), put (pid:~p, signal: ~p, targetnode: ~p) "
  -                "into waiting pool (active reps: ~p, waiting reps: ~p)",
  -                [Pid, TotalTokens, Signal, TargetNode, dict:size(ActivePool), dict:size(NewWaitingPool)]),
  +    ?log_debug("no token available (total tokens:~p), put (pid:~p, signal: ~p, targetnode: ~p) "
  +               "into waiting pool (active reps: ~p, waiting reps: ~p)",
  +               [Pid, TotalTokens, Signal, TargetNode, dict:size(ActivePool), dict:size(NewWaitingPool)]),
   
       {reply, ok, update_status_to_parent(NewState)};
   
  
positive.code:     gen_server:call(Server, {change_tokens, NewTokens}, infinity).
  
  init({Count, Type, Parent}) ->
      ?xdcr_debug("init concurrent throttle process, pid: ~p, type: ~p"
                  "# of available token: ~p", [self(), Type, Count]),
      WaitingPool = dict:new(),
      ActivePool = dict:new(),
      TargetLoad = dict:new(),
  
negative.code: 
      case Reason of
          normal  ->
              ?log_debug("rep ~p to node ~p is done normally, total tokens: ~p, available tokens: ~p,"
                         "(active reps: ~p, waiting reps: ~p)",
                         [Pid, TargetNode,
                          TotalTokens, (AvailTokens + 1),
                          dict:size(NewActivePool), dict:size(WaitingPool)]);
          {Type, _Info} ->
              ?log_debug("rep ~p to node ~p crashed (type: ~p), total tokens: ~p, available tokens: ~p, "
                         "(active reps: ~p, waiting reps: ~p)",
                         [Pid, TargetNode, Type,
                          TotalTokens, (AvailTokens + 1),
                          dict:size(NewActivePool), dict:size(WaitingPool)])
      end,
  
      NewState.
  