diff options
| -rw-r--r-- | src/rabbit_upgrade.erl | 9 |
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) |
