diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-09-17 11:13:30 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-09-17 11:13:30 +0100 |
commit | 8b568a8ea5812df577c0af2901081c63abe47d96 (patch) | |
tree | 31f5f3bf630295d04b17a0c1b4a7fe6212d59525 | |
parent | 8faf835e65520045bb67538b86e4660db804dde3 (diff) | |
parent | ce22572cfc40fe84742f64e1d4720b4d9c06e05a (diff) | |
download | rabbitmq-server-8b568a8ea5812df577c0af2901081c63abe47d96.tar.gz |
Merge bug26370
-rw-r--r-- | src/rabbit.erl | 4 | ||||
-rw-r--r-- | src/rabbit_table.erl | 11 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index bd34cf8b..a698e4ba 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -650,8 +650,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 fe2c3b58..41bf9585 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'). @@ -89,9 +90,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), |