diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2023-01-20 11:46:18 +0200 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2023-01-20 11:46:18 +0200 |
commit | f3f09def230698509eb4b7cbbe9d7cb00088cdef (patch) | |
tree | cda834e14054766cf9ece74162c2ab4b3e387c57 | |
parent | afb5deb9db44b52bd86512a8829a28ed52adcd0d (diff) | |
parent | b2b9d91668ca7af9bbed95c5b3f502c39c9020af (diff) | |
download | mariadb-git-f3f09def230698509eb4b7cbbe9d7cb00088cdef.tar.gz |
Merge branch 'codership-10.4-fix-sst_received' into bb-10.4-MDEV-30419
-rw-r--r-- | sql/wsrep_mysqld.cc | 22 | ||||
-rw-r--r-- | sql/wsrep_sst.cc | 11 | ||||
m--------- | wsrep-lib | 0 |
3 files changed, 26 insertions, 7 deletions
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 53212e2433c..a95cefc6f0f 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -915,13 +915,19 @@ void wsrep_init_startup (bool sst_first) With mysqldump SST (!sst_first) wait until the server reaches joiner state and procedd to accepting connections. */ + int err= 0; if (sst_first) { - server_state.wait_until_state(Wsrep_server_state::s_initializing); + err= server_state.wait_until_state(Wsrep_server_state::s_initializing); } else { - server_state.wait_until_state(Wsrep_server_state::s_joiner); + err= server_state.wait_until_state(Wsrep_server_state::s_joiner); + } + if (err) + { + WSREP_ERROR("Wsrep startup was interrupted"); + unireg_abort(1); } } @@ -1016,7 +1022,11 @@ void wsrep_stop_replication(THD *thd) { WSREP_DEBUG("Disconnect provider"); Wsrep_server_state::instance().disconnect(); - Wsrep_server_state::instance().wait_until_state(Wsrep_server_state::s_disconnected); + if (Wsrep_server_state::instance().wait_until_state( + Wsrep_server_state::s_disconnected)) + { + WSREP_WARN("Wsrep interrupted while waiting for disconnected state"); + } } /* my connection, should not terminate with wsrep_close_client_connection(), @@ -1038,7 +1048,11 @@ void wsrep_shutdown_replication() { WSREP_DEBUG("Disconnect provider"); Wsrep_server_state::instance().disconnect(); - Wsrep_server_state::instance().wait_until_state(Wsrep_server_state::s_disconnected); + if (Wsrep_server_state::instance().wait_until_state( + Wsrep_server_state::s_disconnected)) + { + WSREP_WARN("Wsrep interrupted while waiting for disconnected state"); + } } wsrep_close_client_connections(TRUE); diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc index ddd5b5945b4..1fb1d6890e2 100644 --- a/sql/wsrep_sst.cc +++ b/sql/wsrep_sst.cc @@ -336,9 +336,14 @@ static bool wsrep_sst_complete (THD* thd, if ((state == Wsrep_server_state::s_joiner || state == Wsrep_server_state::s_initialized)) { - Wsrep_server_state::instance().sst_received(client_service, - rcode); - WSREP_INFO("SST succeeded for position %s", start_pos_buf); + if (Wsrep_server_state::instance().sst_received(client_service, rcode)) + { + failed= true; + } + else + { + WSREP_INFO("SST succeeded for position %s", start_pos_buf); + } } else { diff --git a/wsrep-lib b/wsrep-lib -Subproject f8ff2cfdd4c6424ffd96fc53bcc0f2e1d9ffe13 +Subproject 275a0af8c5b92f0ee33cfe9e23f3db5f59b56e9 |