summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_mnesia.erl13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index b4f6eebbd7..6781c1a720 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -103,14 +103,16 @@ init_with_lock() ->
init_with_lock(0, _, RunPeerDiscovery) ->
case rabbit_peer_discovery:lock_acquisition_failure_mode() of
ignore ->
- rabbit_log:warning("Cannot acquire a lock during clustering", []),
+ rabbit_log:warning("Could not acquire a peer discovery lock, out of retries", []),
RunPeerDiscovery(),
rabbit_peer_discovery:maybe_register();
fail ->
exit(cannot_acquire_startup_lock)
end;
init_with_lock(Retries, Timeout, RunPeerDiscovery) ->
- case rabbit_peer_discovery:lock() of
+ LockResult = rabbit_peer_discovery:lock(),
+ rabbit_log:debug("rabbit_peer_discovery:lock returned ~p", [LockResult]),
+ case LockResult of
not_supported ->
rabbit_log:info("Peer discovery backend does not support locking, falling back to randomized delay"),
%% See rabbitmq/rabbitmq-server#1202 for details.
@@ -126,6 +128,13 @@ init_with_lock(Retries, Timeout, RunPeerDiscovery) ->
rabbit_peer_discovery:maybe_register()
after
rabbit_peer_discovery:unlock(Data)
+ end;
+ Data when is_binary(Data) or is_list(Data) ->
+ try
+ RunPeerDiscovery(),
+ rabbit_peer_discovery:maybe_register()
+ after
+ rabbit_peer_discovery:unlock(Data)
end
end.