summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2011-04-08 18:55:18 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2011-04-08 18:55:18 +0100
commitbd3bbb3660616dfa5613eb651842325b6b170de8 (patch)
tree448f9c7e66ea52b8a2a0f9fa4858601b6bdfd593 /src
parenta164bb8c72406a9573e1c45072c03c34e841b0aa (diff)
parent147307d9846e21fdce76b686d51710113accd135 (diff)
downloadrabbitmq-server-git-bd3bbb3660616dfa5613eb651842325b6b170de8.tar.gz
merge bug24031 into default
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_misc.erl21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl
index 85e08615c9..87181c2453 100644
--- a/src/rabbit_misc.erl
+++ b/src/rabbit_misc.erl
@@ -467,17 +467,16 @@ map_in_order(F, L) ->
%% We ignore entries that have been modified or removed.
table_filter(Pred, PrePostCommitFun, TableName) ->
lists:foldl(
- fun (E, Acc) -> execute_mnesia_transaction(
- fun () -> case mnesia:match_object(TableName, E,
- read) of
- [] -> false;
- _ -> Pred(E)
- end
- end,
- fun (false, _Tx) -> Acc;
- (true, Tx) -> PrePostCommitFun(E, Tx),
- [E | Acc]
- end)
+ fun (E, Acc) ->
+ case execute_mnesia_transaction(
+ fun () -> mnesia:match_object(TableName, E, read) =/= []
+ andalso Pred(E) end,
+ fun (false, _Tx) -> false;
+ (true, Tx) -> PrePostCommitFun(E, Tx), true
+ end) of
+ false -> Acc;
+ true -> [E | Acc]
+ end
end, [], dirty_read_all(TableName)).
dirty_read_all(TableName) ->