summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-12-16 15:37:57 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2010-12-16 15:37:57 +0000
commit27c278c115a12f00034f44ee51f61e4ba3227403 (patch)
tree6cef0603a6621360729f33c3e9efc3c581a1410e
parent982603860aedd6fef441aae23d18ba24029734fc (diff)
downloadrabbitmq-server-git-27c278c115a12f00034f44ee51f61e4ba3227403.tar.gz
Make use of the wonderful new registry.
-rw-r--r--src/gm.erl12
-rw-r--r--src/rabbit.erl13
-rw-r--r--src/rabbit_mnesia.erl20
-rw-r--r--src/rabbit_registry.erl3
4 files changed, 23 insertions, 25 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 47971bd4b3..d41b7a1ce6 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -372,6 +372,7 @@
-behaviour(gen_server2).
+-behaviour(rabbit_mnesia).
-export([create_tables/0, start_link/3, leave/1, broadcast/2,
confirmed_broadcast/2, group_members/1]).
@@ -381,7 +382,7 @@
-export([behaviour_info/1]).
--export([add_to_rabbit_mnesia/0]).
+-export([table_definitions/0]).
-define(GROUP_TABLE, gm_group).
-define(HIBERNATE_AFTER_MIN, 1000).
@@ -413,7 +414,9 @@
-rabbit_boot_step({gm_tables,
[{description, "add GM tables to rabbit_mnesia"},
- {mfa, {?MODULE, add_to_rabbit_mnesia, []}},
+ {mfa, {rabbit_registry, register,
+ [mnesia, <<"gm">>, ?MODULE]}},
+ {requires, rabbit_registry},
{enables, database}]}).
-define(TAG, '$gm').
@@ -480,10 +483,9 @@ create_tables([{Table, Attributes} | Tables]) ->
Err -> Err
end.
-add_to_rabbit_mnesia() ->
+table_definitions() ->
{Name, Attributes} = ?TABLE,
- ok = rabbit_mnesia:add_table_definition(
- {Name, [?TABLE_MATCH | Attributes]}).
+ [{Name, [?TABLE_MATCH | Attributes]}].
start_link(GroupName, Module, Args) ->
gen_server2:start_link(?MODULE, [GroupName, Module, Args], []).
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 2ebfdecf20..d46c62b6d9 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -51,6 +51,12 @@
[]}},
{enables, external_infrastructure}]}).
+-rabbit_boot_step({rabbit_registry,
+ [{description, "plugin registry"},
+ {mfa, {rabbit_sup, start_child,
+ [rabbit_registry]}},
+ {enables, external_infrastructure}]}).
+
-rabbit_boot_step({database,
[{mfa, {rabbit_mnesia, init, []}},
{enables, external_infrastructure}]}).
@@ -69,13 +75,6 @@
-rabbit_boot_step({external_infrastructure,
[{description, "external infrastructure ready"}]}).
--rabbit_boot_step({rabbit_registry,
- [{description, "plugin registry"},
- {mfa, {rabbit_sup, start_child,
- [rabbit_registry]}},
- {requires, external_infrastructure},
- {enables, kernel_ready}]}).
-
-rabbit_boot_step({rabbit_log,
[{description, "logging server"},
{mfa, {rabbit_sup, start_restartable_child,
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index c97988d0f7..1d2c3640e5 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -34,11 +34,12 @@
-export([ensure_mnesia_dir/0, dir/0, status/0, init/0, is_db_empty/0,
cluster/1, force_cluster/1, reset/0, force_reset/0,
- is_clustered/0, empty_ram_only_tables/0, copy_db/1,
- add_table_definition/1]).
+ is_clustered/0, empty_ram_only_tables/0, copy_db/1]).
-export([table_names/0]).
+-export([behaviour_info/1]).
+
%% create_tables/0 exported for helping embed RabbitMQ in or alongside
%% other mnesia-using Erlang applications, such as ejabberd
-export([create_tables/0]).
@@ -72,6 +73,9 @@
%%----------------------------------------------------------------------------
+behaviour_info(callbacks) -> [{table_definitions, 0}];
+behaviour_info(_Other) -> undefined.
+
status() ->
[{nodes, case mnesia:system_info(is_running) of
yes -> [{Key, Nodes} ||
@@ -214,17 +218,9 @@ table_definitions() ->
{match, #amqqueue{name = queue_name_match(), _='_'}}]}]
++ plugin_table_definitions().
-%% TODO: re-work this abuse of the application env as a register with
-%% the generic registry that should be landing at some point.
-add_table_definition(Def) ->
- ok = application:set_env(rabbit, plugin_mnesia_tables,
- [Def | plugin_table_definitions()], infinity).
-
plugin_table_definitions() ->
- case application:get_env(rabbit, plugin_mnesia_tables) of
- {ok, Defs} -> Defs;
- undefined -> []
- end.
+ lists:append([Mod:table_definitions()
+ || {_Type, Mod} <- rabbit_registry:lookup_all(mnesia)]).
binding_match() ->
#binding{source = exchange_name_match(),
diff --git a/src/rabbit_registry.erl b/src/rabbit_registry.erl
index 7a3fcb51e5..935cf1d0fb 100644
--- a/src/rabbit_registry.erl
+++ b/src/rabbit_registry.erl
@@ -111,7 +111,8 @@ sanity_check_module(ClassModule, Module) ->
end.
class_module(exchange) -> rabbit_exchange_type;
-class_module(auth_mechanism) -> rabbit_auth_mechanism.
+class_module(auth_mechanism) -> rabbit_auth_mechanism;
+class_module(mnesia) -> rabbit_mnesia.
%%---------------------------------------------------------------------------