summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2008-07-11 16:38:19 +0100
committerMatthias Radestock <matthias@lshift.net>2008-07-11 16:38:19 +0100
commitc3a84592c8547eb306fca94c363c308e49d0c98d (patch)
tree121a8f51f2173f34f2b084e281e789a07a6431fd
parentac559c126eef34dda5d209b0f88ee7b906fe7e39 (diff)
downloadrabbitmq-server-c3a84592c8547eb306fca94c363c308e49d0c98d.tar.gz
Backed out changeset a764527adf12
-rw-r--r--include/rabbit.hrl2
-rw-r--r--src/rabbit_amqqueue.erl2
-rw-r--r--src/rabbit_exchange.erl2
-rw-r--r--src/rabbit_realm.erl26
-rw-r--r--src/rabbit_tests.erl23
5 files changed, 19 insertions, 36 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl
index c7415f45..5a3006dd 100644
--- a/include/rabbit.hrl
+++ b/include/rabbit.hrl
@@ -30,7 +30,7 @@
-record(vhost_realm, {virtual_host, realm}).
-record(realm, {name,ignore}).
--record(realm_resource, {realm, resource, durable}).
+-record(realm_resource, {realm, resource}).
-record(user_realm, {username, realm, ticket_pattern}).
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 59c41fb8..63f043ba 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -142,7 +142,7 @@ declare(RealmName, NameBin, Durable, AutoDelete, Args) ->
fun () ->
case mnesia:wread({amqqueue, QName}) of
[] -> ok = recover_queue(Q),
- ok = rabbit_realm:add(RealmName, QName, Durable),
+ ok = rabbit_realm:add(RealmName, QName),
Q;
[ExistingQ] -> ExistingQ
end
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 32418ca2..113b7878 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -106,7 +106,7 @@ declare(RealmName, NameBin, Type, Durable, AutoDelete, Args) ->
durable_exchanges, Exchange, write);
true -> ok
end,
- ok = rabbit_realm:add(RealmName, XName, Durable),
+ ok = rabbit_realm:add(RealmName, XName),
Exchange;
[ExistingX] -> ExistingX
end
diff --git a/src/rabbit_realm.erl b/src/rabbit_realm.erl
index 2887158b..2ededb5f 100644
--- a/src/rabbit_realm.erl
+++ b/src/rabbit_realm.erl
@@ -27,7 +27,7 @@
-export([recover/0]).
-export([add_realm/1, delete_realm/1, list_vhost_realms/1]).
--export([add/3, check/2, delete_from_all/1]).
+-export([add/2, delete/2, check/2, delete_from_all/1]).
-export([access_request/3, enter_realm/3, leave_realms/1]).
-export([on_node_down/1]).
@@ -44,8 +44,8 @@
-spec(add_realm/1 :: (realm_name()) -> 'ok').
-spec(delete_realm/1 :: (realm_name()) -> 'ok').
-spec(list_vhost_realms/1 :: (vhost()) -> [name()]).
-% -spec(add/3 :: (realm_name(), r(e_or_q())) -> 'ok').
-% -spec(delete/3 :: (realm_name(), r(e_or_q())) -> 'ok').
+-spec(add/2 :: (realm_name(), r(e_or_q())) -> 'ok').
+-spec(delete/2 :: (realm_name(), r(e_or_q())) -> 'ok').
-spec(check/2 :: (realm_name(), r(e_or_q())) -> bool() | not_found()).
-spec(delete_from_all/1 :: (r(e_or_q())) -> 'ok').
-spec(access_request/3 :: (username(), bool(), ticket()) ->
@@ -109,18 +109,21 @@ list_vhost_realms(VHostPath) ->
VHostPath,
fun () -> mnesia:read({vhost_realm, VHostPath}) end))].
-add(Realm = #resource{kind = realm}, Resource = #resource{}, Durable) ->
- manage_link(fun mnesia:write/1, Realm, Resource, Durable).
+add(Realm = #resource{kind = realm}, Resource = #resource{}) ->
+ manage_link(fun mnesia:write/1, Realm, Resource).
+
+delete(Realm = #resource{kind = realm}, Resource = #resource{}) ->
+ manage_link(fun mnesia:delete_object/1, Realm, Resource).
% This links or unlinks a resource to a realm
manage_link(Action, Realm = #resource{kind = realm, name = RealmName},
- Resource = #resource{name = ResourceName}, Durable) ->
+ Resource = #resource{name = ResourceName}) ->
Table = realm_table_for_resource(Resource),
rabbit_misc:execute_mnesia_transaction(
fun () ->
case mnesia:read({realm, Realm}) of
[] -> mnesia:abort(not_found);
- [_] -> Action({Table, RealmName, ResourceName, Durable})
+ [_] -> Action({Table, RealmName, ResourceName})
end
end).
@@ -129,6 +132,7 @@ realm_table_for_resource(#resource{kind = queue}) -> realm_queue.
parent_table_for_resource(#resource{kind = exchange}) -> exchange;
parent_table_for_resource(#resource{kind = queue}) -> amqqueue.
+
check(#resource{kind = realm, name = Realm}, Resource = #resource{}) ->
F = mnesia:match_object(#realm_resource{resource = Resource#resource.name, realm = Realm}),
case mnesia:async_dirty(F) of
@@ -232,14 +236,14 @@ preen_realm(Resource = #resource{}) ->
LinkType = realm_table_for_resource(Resource),
Q = qlc:q([L#realm_resource.resource || L <- mnesia:table(LinkType)]),
Cursor = qlc:cursor(Q),
- preen_next(Cursor, LinkType, parent_table_for_resource(Resource)),
+ preen_next(Cursor,LinkType,parent_table_for_resource(Resource)),
qlc:delete_cursor(Cursor).
-
-preen_next(Cursor, LinkType, ParentTable) ->
+
+preen_next(Cursor,LinkType,ParentTable) ->
case qlc:next_answers(Cursor,1) of
[] -> ok;
[ResourceKey] ->
- case mnesia:match_object({ParentTable,ResourceKey,'_'}) of
+ case mnesia:read({ParentTable,ResourceKey}) of
[] ->
mnesia:delete_object({LinkType,'_',ResourceKey});
_ -> ok
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 5c265633..beeb3508 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -25,9 +25,7 @@
-module(rabbit_tests).
--include("rabbit.hrl").
-
--export([all_tests/0, test_parsing/0,preening_test/0]).
+-export([all_tests/0, test_parsing/0]).
-import(lists).
@@ -48,25 +46,6 @@ all_tests() ->
test_parsing() ->
passed = test_content_properties(),
passed.
-
-preening_test() ->
- Realm = #resource{virtual_host = <<"/">>,kind = realm, name = <<"/data">>},
- loop(Realm,1),
- rabbit_realm:recover().
-
-loop(_,0) -> ok;
-loop(Realm,N) ->
- declare(Realm,true),
- declare(Realm,false),
- loop(Realm,N-1).
-
-declare(Realm,Durable) ->
- X = rabbit_misc:binstring_guid("x"),
- Q = rabbit_misc:binstring_guid("amq.gen"),
- AutoDelete = false,
- rabbit_exchange:declare(Realm,X, <<"direct">>, Durable, AutoDelete, undefined),
- rabbit_amqqueue:declare(Realm, Q, Durable, AutoDelete, undefined).
-
test_content_properties() ->
test_content_prop_roundtrip([], <<0, 0>>),