Commit 632a503c authored by Jan Lindström's avatar Jan Lindström Committed by Julius Goryavsky

MDEV-29861 : Galera "notify" test cases hang

Problem was that if wsrep_notify_cmd was set it was called
with a new status "joined" it tries to connect to the server
to update some table, but the server isn't initialized yet,
it's not listening for connections. So the server waits for the
script to finish, script waits for mariadb client to connect,
and the client cannot connect, because the server isn't listening.

Fix is to call script only when Galera has already formed a
view or when it is synched or donor.

This fix also enables following test cases:
* galera.MW-284
* galera.galera_binlog_checksum
* galera_var_notify_ssl_ipv6
Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
parent d890aca6
...@@ -13,10 +13,6 @@ ...@@ -13,10 +13,6 @@
galera_as_slave_ctas : MDEV-28378 timeout galera_as_slave_ctas : MDEV-28378 timeout
galera_pc_recovery : MDEV-25199 cluster fails to start up galera_pc_recovery : MDEV-25199 cluster fails to start up
galera_sst_encrypted : MDEV-29876 Galera test failure on galera_sst_encrypted galera_sst_encrypted : MDEV-29876 Galera test failure on galera_sst_encrypted
galera.MW-284 : MDEV-29861 Galera test case hangs
galera.galera_binlog_checksum : MDEV-29861 Galera test case hangs
galera_var_notify_ssl_ipv6 : MDEV-29861 Galera test case hangs
galera_var_notify_cmd: MDEV-29861 Galera test case hangs
galera_var_node_address : MDEV-20485 Galera test failure galera_var_node_address : MDEV-20485 Galera test failure
MDEV-26575 : MDEV-29878 Galera test failure on MDEV-26575 MDEV-26575 : MDEV-29878 Galera test failure on MDEV-26575
galera_bf_abort_group_commit : MDEV-30855 PR to remove the test exists galera_bf_abort_group_commit : MDEV-30855 PR to remove the test exists
...@@ -21,6 +21,13 @@ ...@@ -21,6 +21,13 @@
void wsrep_notify_status(enum wsrep::server_state::state status, void wsrep_notify_status(enum wsrep::server_state::state status,
const wsrep::view* view) const wsrep::view* view)
{ {
if (!view)
{
WSREP_DEBUG("wsrep_notify_status server not yet ready : wsrep_ready=%d status %d",
wsrep_ready, (int)status);
return;
}
if (!wsrep_notify_cmd || 0 == strlen(wsrep_notify_cmd)) if (!wsrep_notify_cmd || 0 == strlen(wsrep_notify_cmd))
{ {
WSREP_INFO("wsrep_notify_cmd is not defined, skipping notification."); WSREP_INFO("wsrep_notify_cmd is not defined, skipping notification.");
......
...@@ -189,7 +189,11 @@ class Config_state ...@@ -189,7 +189,11 @@ class Config_state
void set(enum wsrep::server_state::state status) void set(enum wsrep::server_state::state status)
{ {
wsrep_notify_status(status); if (status == wsrep::server_state::s_donor ||
status == wsrep::server_state::s_synced)
wsrep_notify_status(status, &view_);
else
wsrep_notify_status(status);
lock(); lock();
status_= status; status_= status;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment