diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2012-03-21 14:59:10 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2012-03-21 14:59:10 +0000 |
commit | 140a39c16a6d169647d557fb0123a9e9f2d7f6eb (patch) | |
tree | 4f4d29b19a84ea80d564017588d7ed3dc0988a33 | |
parent | 33cca071e5a859720059abfcb6a13d1e5ba09a08 (diff) | |
download | rabbitmq-server-140a39c16a6d169647d557fb0123a9e9f2d7f6eb.tar.gz |
It's possible somehow we could be left with an empty mnesia directory (spotted with "make cleandb" but maybe other things could do this). So instead check for the existence of the guid serial, which has not changed since at least 1.7.0.
-rw-r--r-- | src/rabbit_guid.erl | 10 | ||||
-rw-r--r-- | src/rabbit_version.erl | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl index f4c425ca..ba0cb04f 100644 --- a/src/rabbit_guid.erl +++ b/src/rabbit_guid.erl @@ -19,6 +19,7 @@ -behaviour(gen_server). -export([start_link/0]). +-export([filename/0]). -export([gen/0, gen_secure/0, string/2, binary/2]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, @@ -38,6 +39,7 @@ -type(guid() :: binary()). -spec(start_link/0 :: () -> rabbit_types:ok_pid_or_error()). +-spec(filename/0 :: () -> string()). -spec(gen/0 :: () -> guid()). -spec(gen_secure/0 :: () -> guid()). -spec(string/2 :: (guid(), any()) -> string()). @@ -51,8 +53,14 @@ start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [update_disk_serial()], []). +%% We use this to detect a (possibly rather old) Mnesia directory, +%% since it has existed since at least 1.7.0 (as far back as I cared +%% to go). +filename() -> + filename:join(rabbit_mnesia:dir(), ?SERIAL_FILENAME). + update_disk_serial() -> - Filename = filename:join(rabbit_mnesia:dir(), ?SERIAL_FILENAME), + Filename = filename(), Serial = case rabbit_file:read_term_file(Filename) of {ok, [Num]} -> Num; {error, enoent} -> 0; diff --git a/src/rabbit_version.erl b/src/rabbit_version.erl index dd1c5a00..ebc0177e 100644 --- a/src/rabbit_version.erl +++ b/src/rabbit_version.erl @@ -96,7 +96,7 @@ record_desired_for_scope(Scope) -> upgrades_required(Scope) -> case recorded_for_scope(Scope) of {error, enoent} -> - case filelib:is_dir(rabbit_mnesia:dir() ++ "/") of + case filelib:is_file(rabbit_guid:filename()) of false -> {ok, []}; %% We're blank, no upgrade needed true -> {error, version_not_available} end; |