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 | cf81d9326027a2133d74bc557bd382ad9ffb7daa (patch) | |
tree | 1c0b08412d731ab5f102ec4adb04222439db789e | |
parent | 7b42798d86a69a1f77958465fe9e57da136a6347 (diff) | |
download | rabbitmq-server-cf81d9326027a2133d74bc557bd382ad9ffb7daa.tar.gz |
more correctness
-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 2a8d8d9b..0250902f 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) -> |