summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-03-21 14:59:10 +0000
committerSimon MacMullen <simon@rabbitmq.com>2012-03-21 14:59:10 +0000
commit7b71672e6ce6ac0c3d06d8f41020177c71c55d74 (patch)
tree4f4d29b19a84ea80d564017588d7ed3dc0988a33 /src
parent975806ecba5d876da65b8faeac8ed6194bcf75f4 (diff)
downloadrabbitmq-server-git-7b71672e6ce6ac0c3d06d8f41020177c71c55d74.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.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_guid.erl10
-rw-r--r--src/rabbit_version.erl2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl
index f4c425ca20..ba0cb04f71 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 dd1c5a00ab..ebc0177e6e 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;