diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2010-07-15 08:53:04 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2010-07-15 08:53:04 +0100 |
| commit | 54bf86a0fb51fd091a2eb63ee5b6898cdeedb01a (patch) | |
| tree | 22336097fed2ac0fd232b6f0ef4487e96cbd68f2 | |
| parent | 2c94632fd5e0e370f16d8fc4a445d63f27e40277 (diff) | |
| download | rabbitmq-server-git-54bf86a0fb51fd091a2eb63ee5b6898cdeedb01a.tar.gz | |
refactor
| -rw-r--r-- | src/rabbit_variable_queue.erl | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index 04dcf88d0c..741687732d 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -1052,12 +1052,8 @@ record_pending_ack(#msg_status { guid = Guid, seq_id = SeqId, remove_pending_ack(KeepPersistent, State = #vqstate { pending_ack = PA, index_state = IndexState }) -> - {SeqIds, GuidsByStore} = - dict:fold(fun (SeqId, {IsPersistent, Guid}, Acc) -> - accumulate_ack(SeqId, IsPersistent, Guid, Acc); - (_SeqId, #msg_status {}, Acc) -> - Acc - end, {[], dict:new()}, PA), + {SeqIds, GuidsByStore} = dict:fold(fun accumulate_ack/3, + {[], dict:new()}, PA), State1 = State #vqstate { pending_ack = dict:new() }, case KeepPersistent of true -> case dict:find(?TRANSIENT_MSG_STORE, GuidsByStore) of @@ -1081,15 +1077,9 @@ ack(MsgStoreFun, Fun, AckTags, State) -> lists:foldl( fun (SeqId, {Acc, State2 = #vqstate { pending_ack = PA }}) -> {ok, AckEntry} = dict:find(SeqId, PA), - {case AckEntry of - #msg_status { index_on_disk = false, %% ASSERTIONS - msg_on_disk = false, - is_persistent = false } -> - Acc; - {IsPersistent, Guid} -> - accumulate_ack(SeqId, IsPersistent, Guid, Acc) - end, Fun(AckEntry, State2 #vqstate { - pending_ack = dict:erase(SeqId, PA) })} + {accumulate_ack(SeqId, AckEntry, Acc), + Fun(AckEntry, State2 #vqstate { + pending_ack = dict:erase(SeqId, PA) })} end, {{[], dict:new()}, State}, AckTags), IndexState1 = rabbit_queue_index:ack(SeqIds, IndexState), ok = dict:fold(fun (MsgStore, Guids, ok) -> @@ -1102,7 +1092,11 @@ ack(MsgStoreFun, Fun, AckTags, State) -> State1 #vqstate { index_state = IndexState1, persistent_count = PCount1 }. -accumulate_ack(SeqId, IsPersistent, Guid, {SeqIdsAcc, Dict}) -> +accumulate_ack(_SeqId, #msg_status { is_persistent = false, %% ASSERTIONS + msg_on_disk = false, + index_on_disk = false }, Acc) -> + Acc; +accumulate_ack(SeqId, {IsPersistent, Guid}, {SeqIdsAcc, Dict}) -> {case IsPersistent of true -> [SeqId | SeqIdsAcc]; false -> SeqIdsAcc |
