diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2013-01-08 17:35:25 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2013-01-08 17:35:25 +0000 |
| commit | 7d1ad8a494c051d2629c8931a3079d801c9173b2 (patch) | |
| tree | f06cdbdaa6358e4b03d371795978e022c09e20ca /src | |
| parent | 9d38131fcd58baf8aa58b289e6b8716a6beb2a93 (diff) | |
| parent | 6c04eb980db74f45d1365f76eae6259f2bf17238 (diff) | |
| download | rabbitmq-server-git-7d1ad8a494c051d2629c8931a3079d801c9173b2.tar.gz | |
merge heads
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_mirror_queue_slave.erl | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl index 53564f09c1..feddf45a83 100644 --- a/src/rabbit_mirror_queue_slave.erl +++ b/src/rabbit_mirror_queue_slave.erl @@ -257,8 +257,12 @@ handle_cast({set_ram_duration_target, Duration}, handle_info(update_ram_duration, State = #state{backing_queue = BQ, backing_queue_state = BQS}) -> - noreply(State#state{rate_timer_ref = just_measured, - backing_queue_state = update_ram_duration(BQ, BQS)}); + BQS1 = update_ram_duration(BQ, BQS), + %% Don't call noreply/1, we don't want to set timers + {State1, Timeout} = next_state(State #state { + rate_timer_ref = undefined, + backing_queue_state = BQS1 }), + {noreply, State1, Timeout}; handle_info(sync_timeout, State) -> noreply(backing_queue_timeout( @@ -566,17 +570,16 @@ promote_me(From, #state { q = Q = #amqqueue { name = QName }, noreply(State) -> {NewState, Timeout} = next_state(State), - {noreply, NewState, Timeout}. + {noreply, ensure_rate_timer(NewState), Timeout}. reply(Reply, State) -> {NewState, Timeout} = next_state(State), - {reply, Reply, NewState, Timeout}. + {reply, Reply, ensure_rate_timer(NewState), Timeout}. next_state(State = #state{backing_queue = BQ, backing_queue_state = BQS}) -> {MsgIds, BQS1} = BQ:drain_confirmed(BQS), - State1 = ensure_rate_timer( - confirm_messages(MsgIds, State #state { - backing_queue_state = BQS1 })), + State1 = confirm_messages(MsgIds, + State #state { backing_queue_state = BQS1 }), case BQ:needs_timeout(BQS1) of false -> {stop_sync_timer(State1), hibernate }; idle -> {stop_sync_timer(State1), ?SYNC_INTERVAL}; @@ -602,15 +605,11 @@ ensure_rate_timer(State = #state { rate_timer_ref = undefined }) -> TRef = erlang:send_after(?RAM_DURATION_UPDATE_INTERVAL, self(), update_ram_duration), State #state { rate_timer_ref = TRef }; -ensure_rate_timer(State = #state { rate_timer_ref = just_measured }) -> - State #state { rate_timer_ref = undefined }; ensure_rate_timer(State) -> State. stop_rate_timer(State = #state { rate_timer_ref = undefined }) -> State; -stop_rate_timer(State = #state { rate_timer_ref = just_measured }) -> - State #state { rate_timer_ref = undefined }; stop_rate_timer(State = #state { rate_timer_ref = TRef }) -> erlang:cancel_timer(TRef), State #state { rate_timer_ref = undefined }. |
