anchor.diff:              _ ->
                   []
           end,
  -    exec_1(ServerType, Managers, ClusterNodes);
  +    exec_1(ServerType, Managers, ClusterNodes, Callback);
   
   %% @doc Execute for gateway and storage nodes.
   %% @private
  -exec(ServerType, Managers) ->
  +exec(ServerType, Managers, Callback) ->
       {ok, Options} = leo_redundant_manager_api:get_options(),
       BitOfRing     = leo_misc:get_value('bit_of_ring', Options),
       AddrId        = random:uniform(leo_math:power(2, BitOfRing)),
  
positive.code:         {ok, #redundancies{nodes = Redundancies}} ->
              Nodes = [{Node, State} || #redundant_node{node = Node,
                                                        available = State} <- Redundancies],
              exec_1(ServerType, Managers, Nodes);
          _Other ->
              void
      end.
  
negative.code:             case ServerType of
                  ?SERVER_GATEWAY ->
                      catch ProcAuditor:register_in_monitor(again),
                      catch exec(ServerType, Managers, Callback);
                  ?SERVER_MANAGER ->
                      catch exec(ServerType, Managers, Callback);
                  ?SERVER_STORAGE ->
                      case leo_redundant_manager_api:get_member_by_node(erlang:node()) of
                          {ok, #member{state = ?STATE_RUNNING}}  ->
                              catch exec(ServerType, Managers, Callback);
                          _ ->
                              void
                      end
  