diff options
| author | Matthew Sackman <matthew@rabbitmq.com> | 2010-12-16 18:13:20 +0000 |
|---|---|---|
| committer | Matthew Sackman <matthew@rabbitmq.com> | 2010-12-16 18:13:20 +0000 |
| commit | 33184f2cdc708cdb49929db33eba0212128228a6 (patch) | |
| tree | 1c57978eb60dad5bf5865f88f0665216ada0c2c1 | |
| parent | 27c278c115a12f00034f44ee51f61e4ba3227403 (diff) | |
| download | rabbitmq-server-git-33184f2cdc708cdb49929db33eba0212128228a6.tar.gz | |
extra_pids => mirror_pids; Also rip out changes to the registry and just hard code that rabbit_mnesia takes care of gm - the problem being that we need access to the table dfns even when rabbit app is stopped, thus the registry would be down
| -rw-r--r-- | include/rabbit.hrl | 2 | ||||
| -rw-r--r-- | src/gm.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_amqqueue.erl | 6 | ||||
| -rw-r--r-- | src/rabbit_mirror_queue_misc.erl | 14 | ||||
| -rw-r--r-- | src/rabbit_mirror_queue_slave.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_mnesia.erl | 11 | ||||
| -rw-r--r-- | src/rabbit_registry.erl | 3 | ||||
| -rw-r--r-- | src/rabbit_router.erl | 4 | ||||
| -rw-r--r-- | src/rabbit_types.erl | 2 |
9 files changed, 20 insertions, 38 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl index 9a74503c1c..421d5fbad9 100644 --- a/include/rabbit.hrl +++ b/include/rabbit.hrl @@ -54,7 +54,7 @@ -record(exchange, {name, type, durable, auto_delete, arguments}). -record(amqqueue, {name, durable, auto_delete, exclusive_owner = none, - arguments, pid, extra_pids}). + arguments, pid, mirror_pids}). %% mnesia doesn't like unary records, so we add a dummy 'value' field -record(route, {binding, value = const}). diff --git a/src/gm.erl b/src/gm.erl index d41b7a1ce6..0a6e346a22 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -372,7 +372,6 @@ -behaviour(gen_server2). --behaviour(rabbit_mnesia). -export([create_tables/0, start_link/3, leave/1, broadcast/2, confirmed_broadcast/2, group_members/1]). @@ -412,13 +411,6 @@ {attributes, record_info(fields, gm_group)}]}). -define(TABLE_MATCH, {match, #gm_group { _ = '_' }}). --rabbit_boot_step({gm_tables, - [{description, "add GM tables to rabbit_mnesia"}, - {mfa, {rabbit_registry, register, - [mnesia, <<"gm">>, ?MODULE]}}, - {requires, rabbit_registry}, - {enables, database}]}). - -define(TAG, '$gm'). -ifdef(use_specs). diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index e4bc9f764f..731bd23429 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -207,7 +207,7 @@ declare(QueueName, Durable, AutoDelete, Args, Owner) -> arguments = Args, exclusive_owner = Owner, pid = none, - extra_pids = []}), + mirror_pids = []}), case gen_server2:call(Q#amqqueue.pid, {init, false}) of not_found -> rabbit_misc:not_found(QueueName); Q1 -> Q1 @@ -488,7 +488,7 @@ on_node_down(Node) -> rabbit_misc:execute_mnesia_transaction( fun () -> qlc:e(qlc:q([delete_queue(QueueName) || #amqqueue{name = QueueName, pid = Pid, - extra_pids = []} + mirror_pids = []} <- mnesia:table(rabbit_queue), node(Pid) == Node])) end))). @@ -503,7 +503,7 @@ pseudo_queue(QueueName, Pid) -> auto_delete = false, arguments = [], pid = Pid, - extra_pids = []}. + mirror_pids = []}. safe_delegate_call_ok(F, Pids) -> {_, Bad} = delegate:invoke(Pids, diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl index d37ebe1f79..237bf080a9 100644 --- a/src/rabbit_mirror_queue_misc.erl +++ b/src/rabbit_mirror_queue_misc.erl @@ -24,18 +24,18 @@ remove_from_queue(QueueName, DeadPids) -> DeadNodes = [node(DeadPid) || DeadPid <- DeadPids], rabbit_misc:execute_mnesia_transaction( fun () -> - [Q = #amqqueue { pid = QPid, - extra_pids = EPids }] = + [Q = #amqqueue { pid = QPid, + mirror_pids = MPids }] = mnesia:read({rabbit_queue, QueueName}), - [QPid1 | EPids1] = - [Pid || Pid <- [QPid | EPids], + [QPid1 | MPids1] = + [Pid || Pid <- [QPid | MPids], not lists:member(node(Pid), DeadNodes)], - case {{QPid, EPids}, {QPid1, EPids1}} of + case {{QPid, MPids}, {QPid1, MPids1}} of {Same, Same} -> QPid; _ -> - Q1 = Q #amqqueue { pid = QPid1, - extra_pids = EPids1 }, + Q1 = Q #amqqueue { pid = QPid1, + mirror_pids = MPids1 }, mnesia:write(rabbit_queue, Q1, write), QPid1 end diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl index 452cbd5a5a..a9429ab80f 100644 --- a/src/rabbit_mirror_queue_slave.erl +++ b/src/rabbit_mirror_queue_slave.erl @@ -108,13 +108,13 @@ init([#amqqueue { name = QueueName } = Q]) -> Node = node(), case rabbit_misc:execute_mnesia_transaction( fun () -> - [Q1 = #amqqueue { pid = QPid, extra_pids = EPids }] = + [Q1 = #amqqueue { pid = QPid, mirror_pids = MPids }] = mnesia:read({rabbit_queue, QueueName}), - case [Pid || Pid <- [QPid | EPids], node(Pid) =:= Node] of + case [Pid || Pid <- [QPid | MPids], node(Pid) =:= Node] of [] -> - EPids1 = EPids ++ [Self], + MPids1 = MPids ++ [Self], mnesia:write(rabbit_queue, - Q1 #amqqueue { extra_pids = EPids1 }, + Q1 #amqqueue { mirror_pids = MPids1 }, write), {ok, QPid}; _ -> diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 1d2c3640e5..399bf1e086 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -38,8 +38,6 @@ -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]). @@ -73,9 +71,6 @@ %%---------------------------------------------------------------------------- -behaviour_info(callbacks) -> [{table_definitions, 0}]; -behaviour_info(_Other) -> undefined. - status() -> [{nodes, case mnesia:system_info(is_running) of yes -> [{Key, Nodes} || @@ -216,11 +211,7 @@ table_definitions() -> [{record_name, amqqueue}, {attributes, record_info(fields, amqqueue)}, {match, #amqqueue{name = queue_name_match(), _='_'}}]}] - ++ plugin_table_definitions(). - -plugin_table_definitions() -> - lists:append([Mod:table_definitions() - || {_Type, Mod} <- rabbit_registry:lookup_all(mnesia)]). + ++ gm:table_definitions(). binding_match() -> #binding{source = exchange_name_match(), diff --git a/src/rabbit_registry.erl b/src/rabbit_registry.erl index 935cf1d0fb..7a3fcb51e5 100644 --- a/src/rabbit_registry.erl +++ b/src/rabbit_registry.erl @@ -111,8 +111,7 @@ sanity_check_module(ClassModule, Module) -> end. class_module(exchange) -> rabbit_exchange_type; -class_module(auth_mechanism) -> rabbit_auth_mechanism; -class_module(mnesia) -> rabbit_mnesia. +class_module(auth_mechanism) -> rabbit_auth_mechanism. %%--------------------------------------------------------------------------- diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl index a4ad7fbce8..66fc4070a9 100644 --- a/src/rabbit_router.erl +++ b/src/rabbit_router.erl @@ -117,8 +117,8 @@ check_delivery(_ , _ , {_ , Qs}) -> {routed, Qs}. lookup_qpids(QNames) -> lists:foldl(fun (QName, QPids) -> case mnesia:dirty_read({rabbit_queue, QName}) of - [#amqqueue{pid = QPid, extra_pids = EPids}] -> - EPids ++ [QPid | QPids]; + [#amqqueue{pid = QPid, mirror_pids = MPids}] -> + MPids ++ [QPid | QPids]; [] -> QPids end diff --git a/src/rabbit_types.erl b/src/rabbit_types.erl index bc1f9d7e4f..9eca964ba6 100644 --- a/src/rabbit_types.erl +++ b/src/rabbit_types.erl @@ -138,7 +138,7 @@ exclusive_owner :: rabbit_types:maybe(pid()), arguments :: rabbit_framing:amqp_table(), pid :: rabbit_types:maybe(pid()), - extra_pids :: [pid()]}). + mirror_pids :: [pid()]}). -type(exchange() :: #exchange{name :: rabbit_exchange:name(), |
