diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-05-31 15:51:34 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-05-31 15:51:34 +0100 |
commit | afe7b305578972e05de2f487b783aa6df33baebb (patch) | |
tree | 320d9d570e850a8f83d3f5d0bd0bcf5a5e0f074c | |
parent | c46dc531aff9ceb0a0b213c736975d5e2fded14d (diff) | |
download | rabbitmq-server-afe7b305578972e05de2f487b783aa6df33baebb.tar.gz |
Allow binding:list_* to be invoked inside a tx meaningfully.
-rw-r--r-- | src/rabbit_binding.erl | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index 2f71bfab..5873537c 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -198,22 +198,33 @@ list(VHostPath) -> Route)]. list_for_source(SrcName) -> - Route = #route{binding = #binding{source = SrcName, _ = '_'}}, - [B || #route{binding = B} <- mnesia:dirty_match_object(rabbit_route, - Route)]. + mnesia:async_dirty( + fun() -> + Route = #route{binding = #binding{source = SrcName, _ = '_'}}, + [B || #route{binding = B} + <- mnesia:match_object(rabbit_route, Route, read)] + end). list_for_destination(DstName) -> - Route = #route{binding = #binding{destination = DstName, _ = '_'}}, - [reverse_binding(B) || #reverse_route{reverse_binding = B} <- - mnesia:dirty_match_object(rabbit_reverse_route, - reverse_route(Route))]. + mnesia:async_dirty( + fun() -> + Route = #route{binding = #binding{destination = DstName, + _ = '_'}}, + [reverse_binding(B) || + #reverse_route{reverse_binding = B} <- + mnesia:match_object(rabbit_reverse_route, + reverse_route(Route), read)] + end). list_for_source_and_destination(SrcName, DstName) -> - Route = #route{binding = #binding{source = SrcName, - destination = DstName, - _ = '_'}}, - [B || #route{binding = B} <- mnesia:dirty_match_object(rabbit_route, - Route)]. + mnesia:async_dirty( + fun() -> + Route = #route{binding = #binding{source = SrcName, + destination = DstName, + _ = '_'}}, + [B || #route{binding = B} <- mnesia:match_object(rabbit_route, + Route, read)] + end). info_keys() -> ?INFO_KEYS. |