anchor.diff:              #rebalancing_state{progress=Old} = State) ->
       NewProgress = rebalance_progress:update(Service, ServiceProgress, Old),
       {next_state, rebalancing,
  -     State#rebalancing_state{progress=NewProgress}}.
  +     State#rebalancing_state{progress=NewProgress}};
  +rebalancing({timeout, _Tref, stop_timeout},
  +            #rebalancing_state{rebalancer = Pid} = State) ->
  +    ?log_debug("Stop rebalance timeout, brutal kill pid = ~p", [Pid]),
  +    exit(Pid, stopped),
  +    {next_state, rebalancing, State#rebalancing_state{stop_timer = undefined}}.
   
   %% Synchronous rebalancing events
   rebalancing({start_rebalance, _KeepNodes, _EjectNodes,
  
positive.code:             #rebalancing_state{rebalancer=Pid,
                                 keep_nodes=KeepNodes,
                                 eject_nodes=EjectNodes,
                                 failed_nodes=FailedNodes}) ->
      Status = case Reason of
                   graceful_failover_done ->
                       none;
  
negative.code:                      ?user_log(?REBALANCE_STOPPED,
                                 "Rebalance stopped by user.~n"),
                       ns_cluster:counter_inc(rebalance_stop),
                       case MaybeTref of
                           undefined ->
                               ok;
                           _ ->
                               gen_fsm:cancel_timer(MaybeTref)
                       end,
                       none;
                   _ ->
                       ?user_log(?REBALANCE_FAILED,
  