summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-06-23 15:01:26 +0100
committerMatthew Sackman <matthew@lshift.net>2009-06-23 15:01:26 +0100
commitcca6c8128e4ddf2623c3bf837e07e51cd6a34d69 (patch)
tree5ceec8ad7d762e70cf18b66fb4c5805b0143f42e
parente9c209150c5f911928863498c0ee51784e5cb86e (diff)
downloadrabbitmq-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.erl8
-rw-r--r--src/rabbit_mixed_queue.erl7
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)),