summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-09-16 11:52:32 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-09-16 11:52:32 +0100
commitce22572cfc40fe84742f64e1d4720b4d9c06e05a (patch)
treeba3e688831ab3eb23500317472da451ad46351c4
parent6586d8c99039396454b90c803664315275094969 (diff)
downloadrabbitmq-server-bug26370.tar.gz
Only check vhost / user / permission tables before inserting default data in case we somehow get a row somewhere during early startup in first boot that confuses the check.bug26370
-rw-r--r--src/rabbit.erl4
-rw-r--r--src/rabbit_table.erl11
2 files changed, 10 insertions, 5 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 29e38c1f..71014ee7 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -622,8 +622,8 @@ recover() ->
rabbit_amqqueue:start(Qs).
maybe_insert_default_data() ->
- case rabbit_table:is_empty() of
- true -> insert_default_data();
+ case rabbit_table:needs_default_data() of
+ true -> insert_default_data();
false -> ok
end.
diff --git a/src/rabbit_table.erl b/src/rabbit_table.erl
index da75932d..ccc51a14 100644
--- a/src/rabbit_table.erl
+++ b/src/rabbit_table.erl
@@ -17,7 +17,7 @@
-module(rabbit_table).
-export([create/0, create_local_copy/1, wait_for_replicated/0, wait/1,
- force_load/0, is_present/0, is_empty/0,
+ force_load/0, is_present/0, is_empty/0, needs_default_data/0,
check_schema_integrity/0, clear_ram_only_tables/0]).
-include("rabbit.hrl").
@@ -33,6 +33,7 @@
-spec(force_load/0 :: () -> 'ok').
-spec(is_present/0 :: () -> boolean()).
-spec(is_empty/0 :: () -> boolean()).
+-spec(needs_default_data/0 :: () -> boolean()).
-spec(check_schema_integrity/0 :: () -> rabbit_types:ok_or_error(any())).
-spec(clear_ram_only_tables/0 :: () -> 'ok').
@@ -83,9 +84,13 @@ force_load() -> [mnesia:force_load_table(T) || T <- names()], ok.
is_present() -> names() -- mnesia:system_info(tables) =:= [].
-is_empty() ->
+is_empty() -> is_empty(names()).
+needs_default_data() -> is_empty([rabbit_user, rabbit_user_permission,
+ rabbit_vhost]).
+
+is_empty(Names) ->
lists:all(fun (Tab) -> mnesia:dirty_first(Tab) == '$end_of_table' end,
- names()).
+ Names).
check_schema_integrity() ->
Tables = mnesia:system_info(tables),