diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-08-20 10:12:19 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-08-20 10:12:19 +0100 |
| commit | ec420ff47884505b680ab167be4e206f7a281240 (patch) | |
| tree | dc3ea1183188ac75ddd734615f840c843a35f9cd /src | |
| parent | 0877754d1515bf361a0fbab7cdf693fc998dd396 (diff) | |
| download | rabbitmq-server-git-ec420ff47884505b680ab167be4e206f7a281240.tar.gz | |
stopped a race
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 0abd2108a9..15939802ae 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -410,7 +410,7 @@ confirm_message_internal(Guid, State = #q { guid_to_channel = GTC, msgs_on_disk = MOD, msg_indices_on_disk = MIOD }) -> case dict:find(Guid, GTC) of - {ok, {ChPid, undefined}} -> ok; + {ok, {_ , undefined}} -> ok; {ok, {ChPid, MsgSeqNo}} -> rabbit_channel:confirm(ChPid, MsgSeqNo); _ -> ok end, @@ -857,9 +857,13 @@ handle_cast({confirm_messages, Guids}, State) -> end, State, Guids)); handle_cast({msgs_written_to_disk, Guids}, - State = #q{msgs_on_disk = MOD, + State = #q{guid_to_channel = GTC, + msgs_on_disk = MOD, msg_indices_on_disk = MIOD}) -> - GuidSet = gb_sets:from_list(Guids), + GuidSet = gb_sets:from_list( + lists:filter(fun(Guid) -> + dict:is_key(Guid, GTC) + end, Guids)), ToConfirmMsgs = gb_sets:intersection(GuidSet, MIOD), gb_sets:fold(fun (Guid, State0) -> confirm_message_internal(Guid, State0) @@ -871,9 +875,13 @@ handle_cast({msgs_written_to_disk, Guids}, gb_sets:difference(MIOD, ToConfirmMsgs)}); handle_cast({msg_indices_written_to_disk, Guids}, - State = #q{msgs_on_disk = MOD, + State = #q{guid_to_channel = GTC, + msgs_on_disk = MOD, msg_indices_on_disk = MIOD}) -> - GuidSet = gb_sets:from_list(Guids), + GuidSet = gb_sets:from_list( + lists:filter(fun(Guid) -> + dict:is_key(Guid, GTC) + end, Guids)), ToConfirmMsgs = gb_sets:intersection(GuidSet, MOD), gb_sets:fold(fun (Guid, State0) -> confirm_message_internal(Guid, State0) |
