summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-01-11 19:23:30 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-01-11 19:23:30 +0300
commit8ff98742d0d8ed5b64233d1bb9cf63b5a0c0d0e4 (patch)
treec3dd2992533699b7261a5e96b232bfb4689a7c42
parent791056b2d1f78cc0094f836ceb779fe6a2d00699 (diff)
downloadrabbitmq-server-git-8ff98742d0d8ed5b64233d1bb9cf63b5a0c0d0e4.tar.gz
Make autoheal state transition timeout configurable
In continuation to #2208.
-rw-r--r--Makefile1
-rw-r--r--src/rabbit_autoheal.erl7
-rw-r--r--test/partitions_SUITE.erl5
3 files changed, 8 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index b0b6ecb3f6..420d8b32f0 100644
--- a/Makefile
+++ b/Makefile
@@ -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}]),