summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2021-04-08 17:00:04 +0100
committerkjnilsson <knilsson@pivotal.io>2021-04-08 17:08:20 +0100
commit200d1b4369cee18181e7b98254eaad643028900f (patch)
tree78ae11c0d5f719a3d0c476a2e3e47ed5f7192452
parent3ecb291d7586e012d4c6e0e99ab9f8738f99cb1a (diff)
downloadrabbitmq-server-git-200d1b4369cee18181e7b98254eaad643028900f.tar.gz
Only generate guid for classic queues
As streams and quorum queues do not need this guid and it creates unnecessary work and disk use.
-rw-r--r--deps/rabbit/src/rabbit_basic.erl2
-rw-r--r--deps/rabbit/src/rabbit_classic_queue.erl11
2 files changed, 10 insertions, 3 deletions
diff --git a/deps/rabbit/src/rabbit_basic.erl b/deps/rabbit/src/rabbit_basic.erl
index cc7c00047e..7ebe58346b 100644
--- a/deps/rabbit/src/rabbit_basic.erl
+++ b/deps/rabbit/src/rabbit_basic.erl
@@ -136,7 +136,7 @@ message(XName, RoutingKey, #content{properties = Props} = DecodedContent) ->
{ok, #basic_message{
exchange_name = XName,
content = strip_header(DecodedContent, ?DELETED_HEADER),
- id = rabbit_guid:gen(),
+ % id = rabbit_guid:gen(),
is_persistent = is_message_persistent(DecodedContent),
routing_keys = [RoutingKey |
header_routes(Props#'P_basic'.headers)]}}
diff --git a/deps/rabbit/src/rabbit_classic_queue.erl b/deps/rabbit/src/rabbit_classic_queue.erl
index b9e0c0a1c6..bc1c1c50d4 100644
--- a/deps/rabbit/src/rabbit_classic_queue.erl
+++ b/deps/rabbit/src/rabbit_classic_queue.erl
@@ -299,7 +299,8 @@ settlement_action(Type, QRef, MsgSeqs, Acc) ->
deliver(Qs0, #delivery{flow = Flow,
msg_seq_no = MsgNo,
message = #basic_message{exchange_name = _Ex},
- confirm = _Confirm} = Delivery) ->
+ confirm = _Confirm} = Delivery0) ->
+ Delivery = maybe_add_basic_message_id(Delivery0),
%% TODO: record master and slaves for confirm processing
{MPids, SPids, Qs, Actions} = qpids(Qs0, MsgNo),
QPids = MPids ++ SPids,
@@ -317,7 +318,6 @@ deliver(Qs0, #delivery{flow = Flow,
delegate:invoke_no_result(SPids, {gen_server2, cast, [SMsg]}),
{Qs, Actions}.
-
-spec dequeue(NoAck :: boolean(), LimiterPid :: pid(),
rabbit_types:ctag(), state()) ->
{ok, Count :: non_neg_integer(), rabbit_amqqueue:qmsg(), state()} |
@@ -525,3 +525,10 @@ send_rejection(Pid, QName, MsgSeqNo) ->
send_queue_event(Pid, QName, Evt) ->
gen_server2:cast(Pid, {queue_event, QName, Evt}).
+
+maybe_add_basic_message_id(#delivery{message =
+ #basic_message{id = undefined} = M} = D) ->
+ D#delivery{message = M#basic_message{id = rabbit_guid:gen()}};
+maybe_add_basic_message_id(D) ->
+ D.
+