diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_mnesia.erl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index a120b9a33c..08e91e27b6 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -97,6 +97,7 @@ status() -> init() -> ensure_mnesia_running(), ensure_mnesia_dir(), + monitor_schema(), Nodes = read_cluster_nodes_config(), ok = init_db(Nodes, should_be_disc_node(Nodes)), %% We intuitively expect the global name server to be synced when @@ -830,3 +831,21 @@ start_mnesia() -> stop_mnesia() -> stopped = mnesia:stop(), ensure_mnesia_not_running(). + +handle_schema_events() -> + receive + {mnesia_table_event, _Event} -> + case is_disc_node() of + true -> ok; + false -> mnesia:dump_tables([schema]) + end, + handle_schema_events(); + _ -> + exit(non_event) + end. + +monitor_schema() -> + spawn(fun () -> mnesia:subscribe({table, schema, simple}), + handle_schema_events() + end), + ok. |
