summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-12-16 18:13:20 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2010-12-16 18:13:20 +0000
commit33184f2cdc708cdb49929db33eba0212128228a6 (patch)
tree1c57978eb60dad5bf5865f88f0665216ada0c2c1
parent27c278c115a12f00034f44ee51f61e4ba3227403 (diff)
downloadrabbitmq-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.hrl2
-rw-r--r--src/gm.erl8
-rw-r--r--src/rabbit_amqqueue.erl6
-rw-r--r--src/rabbit_mirror_queue_misc.erl14
-rw-r--r--src/rabbit_mirror_queue_slave.erl8
-rw-r--r--src/rabbit_mnesia.erl11
-rw-r--r--src/rabbit_registry.erl3
-rw-r--r--src/rabbit_router.erl4
-rw-r--r--src/rabbit_types.erl2
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(),