summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@lshift.net>2008-11-27 16:26:29 +0000
committerSimon MacMullen <simon@lshift.net>2008-11-27 16:26:29 +0000
commitbd00b2c6aa5839d739c8ee3871c8bd3f3d1d4137 (patch)
tree6f683b2df948b17cebdff503ac103667c84c8eaf /src
parentce149ff9a892d160cc666426ba769b718c3a9f16 (diff)
downloadrabbitmq-server-git-bd00b2c6aa5839d739c8ee3871c8bd3f3d1d4137.tar.gz
Create rabbitmq-mnesia-update-needed script
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_mnesia.erl18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 9b67135def..140574b5db 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -30,6 +30,9 @@
-export([table_names/0]).
+%% Called by rabbit-mnesia-update-needed script
+-export([update_needed/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(update_needed/0 :: () -> 'halt').
-endif.
@@ -91,6 +95,20 @@ cluster(ClusterNodes) ->
reset() -> reset(false).
force_reset() -> reset(true).
+%% This is invoked by rabbitmq-mnesia-update-needed. It will halt with an error
+%% code if an update is needed, and halt without one otherwise.
+update_needed() ->
+ application:start(mnesia),
+ ok = ensure_mnesia_running(),
+ ok = ensure_mnesia_dir(),
+ ok = init_db(read_cluster_nodes_config()),
+ try ensure_schema_integrity()
+ catch
+ {error, {schema_integrity_check_failed, _Reason}} ->
+ halt(1)
+ end,
+ halt().
+
%%--------------------------------------------------------------------
table_definitions() ->