summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2011-10-11 22:43:43 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2011-10-11 22:43:43 +0100
commit7871f27da1dc0bd2ae7ff7b9e72e80315186017d (patch)
tree2c0be0edd9dd2314f227be3e6b4d82960f2f44f8
parent518705ee30888ceb519a378baa49327ff7c8550d (diff)
downloadrabbitmq-server-git-7871f27da1dc0bd2ae7ff7b9e72e80315186017d.tar.gz
only confirm messages on 'remove' that are pending confirmation
-rw-r--r--src/rabbit_msg_store.erl5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index fc3cbebd4e..e4691b81d0 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -1103,9 +1103,10 @@ record_pending_confirm(CRef, MsgId, State) ->
client_confirm(CRef, MsgIds, ActionTaken, State) ->
update_pending_confirms(
fun (MsgOnDiskFun, CTM) ->
- MsgOnDiskFun(MsgIds, ActionTaken),
case dict:find(CRef, CTM) of
- {ok, Gs} -> MsgIds1 = gb_sets:difference(Gs, MsgIds),
+ {ok, Gs} -> MsgOnDiskFun(gb_sets:intersection(Gs, MsgIds),
+ ActionTaken),
+ MsgIds1 = gb_sets:difference(Gs, MsgIds),
case gb_sets:is_empty(MsgIds1) of
true -> dict:erase(CRef, CTM);
false -> dict:store(CRef, MsgIds1, CTM)