summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2008-12-02 11:40:23 +0000
committerMatthias Radestock <matthias@lshift.net>2008-12-02 11:40:23 +0000
commit60b0f6703e409f7629ea48017dade4d1c2d9672a (patch)
tree3a73da000dd483313d6f455381eba30154e219f9 /src
parent4029615d25b0b6160eab6a61cd09d2e8e6c98e89 (diff)
parent99f686ef9115605c9bc9c5f19db9f61a8590d880 (diff)
downloadrabbitmq-server-git-60b0f6703e409f7629ea48017dade4d1c2d9672a.tar.gz
merge bug19871 into default
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_mnesia.erl18
-rw-r--r--src/rabbit_tests.erl2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 8d34d2855b..ca8b587846 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -30,6 +30,9 @@
-export([table_names/0]).
+%% Called by rabbitmq-mnesia-current script
+-export([schema_current/0]).
+
%% create_tables/0 exported for helping embed RabbitMQ in or alongside
%% other mnesia-using Erlang applications, such as ejabberd
-export([create_tables/0]).
@@ -48,6 +51,7 @@
-spec(reset/0 :: () -> 'ok').
-spec(force_reset/0 :: () -> 'ok').
-spec(create_tables/0 :: () -> 'ok').
+-spec(schema_current/0 :: () -> bool()).
-endif.
@@ -91,6 +95,20 @@ cluster(ClusterNodes) ->
reset() -> reset(false).
force_reset() -> reset(true).
+%% This is invoked by rabbitmq-mnesia-current.
+schema_current() ->
+ application:start(mnesia),
+ ok = ensure_mnesia_running(),
+ ok = ensure_mnesia_dir(),
+ ok = init_db(read_cluster_nodes_config()),
+ try
+ ensure_schema_integrity(),
+ true
+ catch
+ {error, {schema_integrity_check_failed, _Reason}} ->
+ false
+ end.
+
%%--------------------------------------------------------------------
table_definitions() ->
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index db78bbcc50..09e2cfe4e8 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -131,6 +131,8 @@ test_topic_matching() ->
passed.
test_app_management() ->
+ true = rabbit_mnesia:schema_current(),
+
%% starting, stopping, status
ok = control_action(stop_app, []),
ok = control_action(stop_app, []),