summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_upgrade.erl9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index 481c53e725..57fe7f632a 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -122,16 +122,15 @@ heads(G) ->
apply_upgrades(Upgrades) ->
LockFile = lock_filename(),
- case file:read_file_info(LockFile) of
- {error, enoent} ->
- info("Upgrades: ~w to apply~n", [length(Upgrades)]),
- {ok, Lock} = file:open(LockFile, [write]),
+ case file:open(LockFile, [write, exclusive]) of
+ {ok, Lock} ->
ok = file:close(Lock),
+ info("Upgrades: ~w to apply~n", [length(Upgrades)]),
[apply_upgrade(Upgrade) || Upgrade <- Upgrades],
info("Upgrades: All applied~n", []),
ok = write_version(),
ok = file:delete(LockFile);
- {ok, _FI} ->
+ {error, eexist} ->
exit(previous_upgrade_failed);
{error, _} = Error ->
exit(Error)