diff options
author | Matthias Radestock <matthias@lshift.net> | 2008-07-11 16:38:19 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@lshift.net> | 2008-07-11 16:38:19 +0100 |
commit | c3a84592c8547eb306fca94c363c308e49d0c98d (patch) | |
tree | 121a8f51f2173f34f2b084e281e789a07a6431fd | |
parent | ac559c126eef34dda5d209b0f88ee7b906fe7e39 (diff) | |
download | rabbitmq-server-c3a84592c8547eb306fca94c363c308e49d0c98d.tar.gz |
Backed out changeset a764527adf12
-rw-r--r-- | include/rabbit.hrl | 2 | ||||
-rw-r--r-- | src/rabbit_amqqueue.erl | 2 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 2 | ||||
-rw-r--r-- | src/rabbit_realm.erl | 26 | ||||
-rw-r--r-- | src/rabbit_tests.erl | 23 |
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>>), |