summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2013-01-08 16:45:24 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2013-01-08 16:45:24 +0000
commit7b68b2bbe73a7bc7d2566bcb177404eb5748b9b7 (patch)
tree940bbd307779d8d0f1fb6e0da91cf1fbff27e74f
parentfcbc23ceb85e2b50ae6476a57f7b3009cce6bc41 (diff)
parentbcf6a3dbd53c44f7934418797f3abd164989f8ef (diff)
downloadrabbitmq-server-7b68b2bbe73a7bc7d2566bcb177404eb5748b9b7.tar.gz
merge stable into default
-rw-r--r--src/rabbit_mirror_queue_slave.erl17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl
index 53564f09..5d7733bf 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};