summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Lemenkov <lemenkov@gmail.com>2016-02-02 17:19:19 +0300
committerMichael Klishin <mklishin@pivotal.io>2016-03-23 19:12:32 +0300
commitc1ef21206383a3a5725f6cf8dd30d3aa24013aca (patch)
treefc9aaaec91b3e50c1dfb57c9c80911b4c7650af4
parentae548891fc8a6c8e8254e064d91e3b4e89eba8d6 (diff)
downloadrabbitmq-server-git-c1ef21206383a3a5725f6cf8dd30d3aa24013aca.tar.gz
Make slaves wait timeout configurable instead of hardcoded 15000
This slightly improves rabbitmq/rabbitmq-server#584 Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
-rw-r--r--src/rabbit_mirror_queue_master.erl17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl
index 057a4fad31..e7afe88483 100644
--- a/src/rabbit_mirror_queue_master.erl
+++ b/src/rabbit_mirror_queue_master.erl
@@ -43,7 +43,8 @@
backing_queue_state,
seen_status,
confirmed,
- known_senders
+ known_senders,
+ wait_timeout
}).
-ifdef(use_specs).
@@ -130,7 +131,15 @@ init_with_existing_bq(Q = #amqqueue{name = QName}, BQ, BQS) ->
backing_queue_state = BQS,
seen_status = dict:new(),
confirmed = [],
- known_senders = sets:new() }.
+ known_senders = sets:new(),
+ wait_timeout = get_slave_wait_timeout() }.
+
+get_slave_wait_timeout() ->
+ case application:get_env(rabbit, slave_wait_timeout) of
+ {ok, T} -> T;
+ undefined -> 15000
+ end.
+
stop_mirroring(State = #state { coordinator = CPid,
backing_queue = BQ,
@@ -203,7 +212,7 @@ delete_and_terminate(Reason, State = #state { backing_queue = BQ,
stop_all_slaves(Reason, State),
State#state{backing_queue_state = BQ:delete_and_terminate(Reason, BQS)}.
-stop_all_slaves(Reason, #state{name = QName, gm = GM}) ->
+stop_all_slaves(Reason, #state{name = QName, gm = GM, wait_timeout = WT}) ->
{ok, #amqqueue{slave_pids = SPids}} = rabbit_amqqueue:lookup(QName),
PidsMRefs = [{Pid, erlang:monitor(process, Pid)} || Pid <- [GM | SPids]],
ok = gm:broadcast(GM, {delete_and_terminate, Reason}),
@@ -215,7 +224,7 @@ stop_all_slaves(Reason, #state{name = QName, gm = GM}) ->
[receive
{'DOWN', MRef, process, _Pid, _Info} ->
ok
- after 15000 ->
+ after WT ->
rabbit_mirror_queue_misc:log_warning(
QName, "Missing 'DOWN' message from ~p in node ~p~n",
[Pid, node(Pid)]),