summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2023-01-20 11:46:18 +0200
committerJan Lindström <jan.lindstrom@mariadb.com>2023-01-20 11:46:18 +0200
commitf3f09def230698509eb4b7cbbe9d7cb00088cdef (patch)
treecda834e14054766cf9ece74162c2ab4b3e387c57
parentafb5deb9db44b52bd86512a8829a28ed52adcd0d (diff)
parentb2b9d91668ca7af9bbed95c5b3f502c39c9020af (diff)
downloadmariadb-git-f3f09def230698509eb4b7cbbe9d7cb00088cdef.tar.gz
Merge branch 'codership-10.4-fix-sst_received' into bb-10.4-MDEV-30419
-rw-r--r--sql/wsrep_mysqld.cc22
-rw-r--r--sql/wsrep_sst.cc11
m---------wsrep-lib0
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