diff options
| author | Matthew Sackman <matthew@lshift.net> | 2009-06-23 15:01:26 +0100 |
|---|---|---|
| committer | Matthew Sackman <matthew@lshift.net> | 2009-06-23 15:01:26 +0100 |
| commit | cca6c8128e4ddf2623c3bf837e07e51cd6a34d69 (patch) | |
| tree | 5ceec8ad7d762e70cf18b66fb4c5805b0143f42e | |
| parent | e9c209150c5f911928863498c0ee51784e5cb86e (diff) | |
| download | rabbitmq-server-git-cca6c8128e4ddf2623c3bf837e07e51cd6a34d69.tar.gz | |
acktags in ack or tx_commit do not need to be ordered. Messages in tx_cancel do not need to be ordered either. Hence removal of quite a lot of lists:reverse.
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_mixed_queue.erl | 7 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 9fe6f50d38..3425ebd239 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -258,7 +258,7 @@ run_message_queue(State = #q { mixed_state = MS }) -> {{_IsEmpty1, AutoAcks}, State1} = deliver_queue(Funs, {IsEmpty, []}, State), {ok, MS1} = - rabbit_mixed_queue:ack(lists:reverse(AutoAcks), State1 #q.mixed_state), + rabbit_mixed_queue:ack(AutoAcks, State1 #q.mixed_state), State1 #q { mixed_state = MS1 }. attempt_immediate_delivery(none, _ChPid, Msg, State) -> @@ -303,7 +303,7 @@ deliver_or_requeue_n(MsgsWithAcks, State) -> {{_RemainingLengthMinusOne, AutoAcks, OutstandingMsgs}, NewState} = deliver_queue(Funs, {length(MsgsWithAcks) - 1, [], MsgsWithAcks}, State), - {ok, MS} = rabbit_mixed_queue:ack(lists:reverse(AutoAcks), + {ok, MS} = rabbit_mixed_queue:ack(AutoAcks, NewState #q.mixed_state), case OutstandingMsgs of [] -> run_message_queue(NewState #q { mixed_state = MS }); @@ -462,7 +462,7 @@ commit_transaction(Txn, State) -> pending_acks = PendingAcks } = lookup_tx(Txn), PendingMessagesOrdered = lists:reverse(PendingMessages), - PendingAcksOrdered = lists:append(lists:reverse(PendingAcks)), + PendingAcksOrdered = lists:append(PendingAcks), Acks = case lookup_ch(ChPid) of not_found -> []; @@ -479,7 +479,7 @@ commit_transaction(Txn, State) -> rollback_transaction(Txn, State) -> #tx { pending_messages = PendingMessages } = lookup_tx(Txn), - {ok, MS} = rabbit_mixed_queue:tx_cancel(lists:reverse(PendingMessages), + {ok, MS} = rabbit_mixed_queue:tx_cancel(PendingMessages, State #q.mixed_state), erase_tx(Txn), State #q { mixed_state = MS }. diff --git a/src/rabbit_mixed_queue.erl b/src/rabbit_mixed_queue.erl index bb9b90a3d7..4392a00681 100644 --- a/src/rabbit_mixed_queue.erl +++ b/src/rabbit_mixed_queue.erl @@ -169,7 +169,7 @@ to_mixed_mode(TxnMessages, State = _ -> [Msg #basic_message.guid | Acc] end end, [], TxnMessages), - ok = rabbit_disk_queue:tx_cancel(lists:reverse(Cancel)), + ok = rabbit_disk_queue:tx_cancel(Cancel), {ok, State #mqstate { mode = mixed, msg_buf = MsgBuf1 }}. purge_non_persistent_messages(State = #mqstate { mode = disk, queue = Q, @@ -184,7 +184,7 @@ purge_non_persistent_messages(State = #mqstate { mode = disk, queue = Q, rabbit_disk_queue:requeue_with_seqs(Q, lists:reverse(Requeue)) end, ok = if Acks == [] -> ok; - true -> rabbit_disk_queue:ack(Q, lists:reverse(Acks)) + true -> rabbit_disk_queue:ack(Q, Acks) end, {ok, State #mqstate { length = Length }}. @@ -338,13 +338,12 @@ tx_commit(Publishes, Acks, State = #mqstate { mode = mixed, queue = Q, length = Length + erlang:length(Publishes) }}. only_persistent_msg_ids(Pubs) -> - lists:reverse( lists:foldl( fun (Msg = #basic_message { is_persistent = IsPersistent }, Acc) -> if IsPersistent -> [Msg #basic_message.guid | Acc]; true -> Acc end - end, [], Pubs)). + end, [], Pubs). tx_cancel(Publishes, State = #mqstate { mode = disk }) -> ok = rabbit_disk_queue:tx_cancel(only_msg_ids(Publishes)), |
