diff options
author | Michael Klishin <michael@clojurewerkz.org> | 2020-01-11 19:23:30 +0300 |
---|---|---|
committer | Michael Klishin <michael@clojurewerkz.org> | 2020-01-11 19:23:30 +0300 |
commit | 8ff98742d0d8ed5b64233d1bb9cf63b5a0c0d0e4 (patch) | |
tree | c3dd2992533699b7261a5e96b232bfb4689a7c42 | |
parent | 791056b2d1f78cc0094f836ceb779fe6a2d00699 (diff) | |
download | rabbitmq-server-git-8ff98742d0d8ed5b64233d1bb9cf63b5a0c0d0e4.tar.gz |
Make autoheal state transition timeout configurable
In continuation to #2208.
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | src/rabbit_autoheal.erl | 7 | ||||
-rw-r--r-- | test/partitions_SUITE.erl | 5 |
3 files changed, 8 insertions, 5 deletions
@@ -56,6 +56,7 @@ define PROJECT_ENV {reverse_dns_lookups, false}, {cluster_partition_handling, ignore}, {cluster_keepalive_interval, 10000}, + {autoheal_state_transition_timeout, 60000}, {tcp_listen_options, [{backlog, 128}, {nodelay, true}, {linger, {true, 0}}, diff --git a/src/rabbit_autoheal.erl b/src/rabbit_autoheal.erl index b43fd672d8..316c8c89cb 100644 --- a/src/rabbit_autoheal.erl +++ b/src/rabbit_autoheal.erl @@ -372,6 +372,7 @@ wait_for_supervisors(Monitors) -> restart_loser(State, Winner) -> rabbit_log:warning( "Autoheal: we were selected to restart; winner is ~p~n", [Winner]), + NextStateTimeout = application:get_env(rabbit, autoheal_state_transition_timeout, 60000), rabbit_node_monitor:run_outside_applications( fun () -> MRef = erlang:monitor(process, {?SERVER, Winner}), @@ -381,10 +382,10 @@ restart_loser(State, Winner) -> not_healing; autoheal_safe_to_start -> State - after 60000 -> + after NextStateTimeout -> rabbit_log:warning( - "Autoheal: Timed out waiting for autoheal_safe_to_start, - winner is ~p; Start and retry autoheal", [Winner]), + "Autoheal: timed out waiting for a safe-to-start message from the winner (~p); will retry", + [Winner]), not_healing end, erlang:demonitor(MRef, [flush]), diff --git a/test/partitions_SUITE.erl b/test/partitions_SUITE.erl index 12a43b9fa6..1c7151d209 100644 --- a/test/partitions_SUITE.erl +++ b/test/partitions_SUITE.erl @@ -21,7 +21,7 @@ -compile(export_all). -%% We set ticktime to 1s and setuptime is 7s so to make sure it +%% We set ticktime to 1s and setup time is 7s so to make sure it %% passes... -define(DELAY, 8000). @@ -119,7 +119,7 @@ end_per_testcase(Testcase, Config) -> rabbit_ct_helpers:testcase_finished(Config1, Testcase). %% ------------------------------------------------------------------- -%% Testcases. +%% Test cases. %% ------------------------------------------------------------------- ignore(Config) -> @@ -400,6 +400,7 @@ partial_pause_minority(Config) -> ok. partial_pause_if_all_down(Config) -> + rabbit_ct_broker_helpers:rpc_all(Config, application, set_env, [rabbit, autoheal_state_transition_timeout, 3000]), [A, B, C] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename), set_mode(Config, {pause_if_all_down, [B], ignore}), block([{A, B}]), |