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} = State) ->
      ?log_debug("Sending stop to rebalancer: ~p", [Pid]),
      Pid ! stop,
      {reply, ok, rebalancing, State};
  rebalancing(rebalance_progress, _From,
              #rebalancing_state{progress = Progress} = State) ->
      AggregatedProgress = dict:to_list(rebalance_progress:get_progress(Progress)),
  
negative.code:             #rebalancing_state{rebalancer=Pid,
                                 keep_nodes=KeepNodes,
                                 eject_nodes=EjectNodes,
                                 failed_nodes=FailedNodes,
                                 stop_timer = MaybeTref}) ->
      Status = case Reason of
                   graceful_failover_done ->
                       none;
  