diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2012-08-12 13:23:23 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-08-12 13:23:23 +0100 |
| commit | 86b6fe74ff16aa513c9d26a4d80a75e2c09d60b1 (patch) | |
| tree | 1c0b08412d731ab5f102ec4adb04222439db789e /src | |
| parent | ce116151867e52927937f9f0dcf5f07885e22b9e (diff) | |
| download | rabbitmq-server-git-86b6fe74ff16aa513c9d26a4d80a75e2c09d60b1.tar.gz | |
more correctness
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 2a8d8d9b04..0250902fb3 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -717,7 +717,7 @@ drop_expired_messages(State = #q{backing_queue_state = BQS, backing_queue = BQ }) -> Now = now_micros(), DLXFun = dead_letter_fun(expired, State), - ExpirePred = fun (#message_properties{expiry = Expiry}) -> Now > Expiry end, + ExpirePred = fun (#message_properties{expiry = Exp}) -> Now >= Exp end, {Props, BQS1} = case DLXFun of undefined -> @@ -741,8 +741,11 @@ ensure_ttl_timer(Expiry, State = #q{backing_queue = BQ, when TTL =/= undefined -> case BQ:is_empty(BQS) of true -> State; - false -> TRef = erlang:send_after((Expiry - now_micros()) div 1000, - self(), drop_expired), + false -> After = (case Expiry - now_micros() of + V when V > 0 -> V + 999; %% always fire later + _ -> 0 + end) div 1000, + TRef = erlang:send_after(After, self(), drop_expired), State#q{ttl_timer_ref = TRef} end; ensure_ttl_timer(_Expiry, State) -> |
