diff options
| author | Peter Lemenkov <lemenkov@gmail.com> | 2016-02-02 17:19:19 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2016-03-23 19:12:32 +0300 |
| commit | c1ef21206383a3a5725f6cf8dd30d3aa24013aca (patch) | |
| tree | fc9aaaec91b3e50c1dfb57c9c80911b4c7650af4 /src | |
| parent | ae548891fc8a6c8e8254e064d91e3b4e89eba8d6 (diff) | |
| download | rabbitmq-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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_mirror_queue_master.erl | 17 |
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)]), |
