Skip to content

Commit f5d2fd6

Browse files
committed
Prefer monotonic time to measure durations
Monotonic time instead of wall clock time should be used to measure a duration. This is mostly a cosmetic change given that consumer timeouts are 30 mins by default. See also rabbitmq/khepri#239 #10928
1 parent a6874e3 commit f5d2fd6

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

deps/rabbit/src/rabbit_channel.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
delivery_tag,
118118
%% consumer tag
119119
tag,
120-
delivered_at,
120+
delivered_at :: integer(),
121121
%% queue name
122122
queue,
123123
%% message ID used by queue and message store implementations
@@ -1923,10 +1923,10 @@ record_sent(Type, QueueType, Tag, AckRequired,
19231923
false ->
19241924
ok
19251925
end,
1926-
DeliveredAt = os:system_time(millisecond),
19271926
rabbit_trace:tap_out(Msg, ConnName, ChannelNum, Username, TraceState),
19281927
UAMQ1 = case AckRequired of
19291928
true ->
1929+
DeliveredAt = erlang:monotonic_time(millisecond),
19301930
?QUEUE:in(#pending_ack{delivery_tag = DeliveryTag,
19311931
tag = Tag,
19321932
delivered_at = DeliveredAt,
@@ -2709,7 +2709,7 @@ evaluate_consumer_timeout(State = #ch{unacked_message_q = UAMQ}) ->
27092709

27102710
evaluate_consumer_timeout1(PA = #pending_ack{delivered_at = Time},
27112711
State) ->
2712-
Now = os:system_time(millisecond),
2712+
Now = erlang:monotonic_time(millisecond),
27132713
case get_consumer_timeout(PA, State) of
27142714
Timeout when is_integer(Timeout)
27152715
andalso Time < Now - Timeout ->

0 commit comments

Comments
 (0)