summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_memory_monitor.erl11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/rabbit_memory_monitor.erl b/src/rabbit_memory_monitor.erl
index be15ecbbe1..ec08d475f0 100644
--- a/src/rabbit_memory_monitor.erl
+++ b/src/rabbit_memory_monitor.erl
@@ -153,14 +153,19 @@ handle_call({report_queue_duration, Pid, QueueDuration}, From,
queue_duration_count = Count,
queue_durations = Durations,
desired_duration = SendDuration}) ->
- gen_server2:reply(From, SendDuration),
+ [{_Pid, PrevQueueDuration, PrevSendDuration}] = ets:lookup(Durations, Pid),
+ SendDuration1 =
+ case QueueDuration < 1 andalso PrevSendDuration == infinity of
+ true -> infinity;
+ false -> SendDuration
+ end,
+ gen_server2:reply(From, SendDuration1),
QueueDuration1 = case QueueDuration > ?MAX_QUEUE_DURATION of
true -> infinity;
false -> QueueDuration
end,
- [{_Pid, PrevQueueDuration, _PrevSendDuration}] = ets:lookup(Durations, Pid),
{Sum1, Count1} =
case {PrevQueueDuration, QueueDuration1} of
{infinity, infinity} -> {Sum, Count};
@@ -168,7 +173,7 @@ handle_call({report_queue_duration, Pid, QueueDuration}, From,
{_, infinity} -> {Sum - PrevQueueDuration, Count - 1};
{_, _} -> {Sum - PrevQueueDuration + QueueDuration1, Count}
end,
- true = ets:insert(Durations, {Pid, QueueDuration1, SendDuration}),
+ true = ets:insert(Durations, {Pid, QueueDuration1, SendDuration1}),
{noreply, State#state{queue_duration_sum = Sum1,
queue_duration_count = Count1}};