diff options
| author | Diana Corbacho <diana@rabbitmq.com> | 2019-05-28 23:43:46 +0100 |
|---|---|---|
| committer | Diana Corbacho <diana@rabbitmq.com> | 2019-05-28 23:43:46 +0100 |
| commit | d6f4bdc10a7e752e4b19a1db0e5c5a7d83a3fccd (patch) | |
| tree | 2c4ac38817b8eca773669e4049e7356d8b1cefde | |
| parent | 43dfd5021b0fb012316ec6e9ad388f2cae14ef02 (diff) | |
| download | rabbitmq-server-git-d6f4bdc10a7e752e4b19a1db0e5c5a7d83a3fccd.tar.gz | |
'check' function for health check of virtual hosts
[#163451547]
| -rw-r--r-- | src/rabbit_vhost_sup_sup.erl | 18 | ||||
| -rw-r--r-- | test/vhost_SUITE.erl | 10 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/rabbit_vhost_sup_sup.erl b/src/rabbit_vhost_sup_sup.erl index 46a2b485f2..d9d6091c39 100644 --- a/src/rabbit_vhost_sup_sup.erl +++ b/src/rabbit_vhost_sup_sup.erl @@ -30,6 +30,7 @@ save_vhost_process/2]). -export([delete_on_all_nodes/1, start_on_all_nodes/1]). -export([is_vhost_alive/1]). +-export([check/0]). %% Internal -export([stop_and_delete_vhost/1]). @@ -260,3 +261,20 @@ vhost_restart_strategy() -> transient -> transient; permanent -> permanent end. + +check() -> + VHosts = rabbit_vhost:list(), + lists:filter( + fun(V) -> + case rabbit_vhost_sup_sup:get_vhost_sup(V) of + {ok, Sup} -> + MsgStores = [Pid || {Name, Pid, _, _} <- supervisor:which_children(Sup), + lists:member(Name, [msg_store_persistent, + msg_store_transient])], + not is_vhost_alive(V) orelse (not lists:all(fun(P) -> + erlang:is_process_alive(P) + end, MsgStores)); + {error, _} -> + true + end + end, VHosts). diff --git a/test/vhost_SUITE.erl b/test/vhost_SUITE.erl index 5e598d9f90..123bf741f0 100644 --- a/test/vhost_SUITE.erl +++ b/test/vhost_SUITE.erl @@ -318,7 +318,9 @@ node_starts_with_dead_vhosts(Config) -> false = rabbit_ct_broker_helpers:rpc(Config, 1, rabbit_vhost_sup_sup, is_vhost_alive, [VHost1]), true = rabbit_ct_broker_helpers:rpc(Config, 1, - rabbit_vhost_sup_sup, is_vhost_alive, [VHost2]). + rabbit_vhost_sup_sup, is_vhost_alive, [VHost2]), + [VHost1] = rabbit_ct_broker_helpers:rpc(Config, 1, + rabbit_vhost_sup_sup, check, []). node_starts_with_dead_vhosts_and_ignore_slaves(Config) -> VHost1 = <<"vhost1">>, @@ -331,6 +333,8 @@ node_starts_with_dead_vhosts_and_ignore_slaves(Config) -> rabbit_vhost_sup_sup, is_vhost_alive, [VHost1]), true = rabbit_ct_broker_helpers:rpc(Config, 1, rabbit_vhost_sup_sup, is_vhost_alive, [VHost2]), + [] = rabbit_ct_broker_helpers:rpc(Config, 1, + rabbit_vhost_sup_sup, check, []), Conn = rabbit_ct_client_helpers:open_unmanaged_connection(Config, 0, VHost1), {ok, Chan} = amqp_connection:open_channel(Conn), @@ -373,7 +377,9 @@ node_starts_with_dead_vhosts_and_ignore_slaves(Config) -> false = rabbit_ct_broker_helpers:rpc(Config, 1, rabbit_vhost_sup_sup, is_vhost_alive, [VHost1]), true = rabbit_ct_broker_helpers:rpc(Config, 1, - rabbit_vhost_sup_sup, is_vhost_alive, [VHost2]). + rabbit_vhost_sup_sup, is_vhost_alive, [VHost2]), + [VHost1] = rabbit_ct_broker_helpers:rpc(Config, 1, + rabbit_vhost_sup_sup, check, []). vhost_creation_idempotency(Config) -> VHost = <<"idempotency-test">>, |
