anchor.diff:  %% @end
   %%--------------------------------------------------------------------
   boot_step_release_lock() ->
  -    autocluster_log:info("Running unlock stage"),
  +    autocluster_log:info("Running lock release step"),
       run_steps([fun autocluster:release_startup_lock/1]).
   
   %%--------------------------------------------------------------------
   %% @private
   %% @doc
   %% Run initializations steps in order.
  +%%
   %% - When step succeeds, it returns updated state that is passed to
   %%   subsequent steps.
   %% - When step fails, error is logged and processing stops. Depending
  
positive.code: 
  %%--------------------------------------------------------------------
  %% @doc
  %% Scrapes backend for list of nodes to possibly cluster to, chooses
  %% the best one (if any at all) and tries to join to that node.
  %% Startup sequence is protected against races by backend locking
  %% mechanism (or by random delay for backend without lock support).
  %% @end
  %%--------------------------------------------------------------------
  -spec boot_step_discover_and_join() -> ok.
  boot_step_discover_and_join() ->
      ensure_logging_configured(),
      autocluster_log:info("Running discover/join stage"),
      start_dependee_applications(),
      Steps = [fun autocluster:initialize_backend/1,
               fun autocluster:acquire_startup_lock/1,
  
negative.code:          boot_step_release_lock/0]).
  
  -rabbit_boot_step({autocluster_discover_and_join,
                     [{description, <<"rabbitmq-autocluster: lock acquisition, discovery and clustering">>},
                      {mfa,         {autocluster, boot_step_discover_and_join, []}},
                      {enables,     pre_boot}]}).
  
  -rabbit_boot_step({autocluster_register,
                     [{description, <<"rabbitmq-autocluster: registeration with the backend">>},
                      {mfa,         {autocluster, boot_step_register, []}},
                      {requires,    notify_cluster}]}).
  
  -rabbit_boot_step({autocluster_unlock,
                     [{description, <<"rabbitmq-autocluster: lock release">>},
                      {mfa,        {autocluster, boot_step_release_lock, []}},
                      {requires,   autocluster_register}]}).
  
  %% Boot sequence steps. These are exported for better diagnostics, so we can
  %% get current step name using `erlang:fun_info/2`.
  -export([initialize_backend/1,
           acquire_startup_lock/1,
           find_best_node_to_join/1,
           maybe_cluster/1,
           register_with_backend/1,
           release_startup_lock/1]).
  
  -include("autocluster.hrl").
  