summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2018-07-16 12:22:36 +0300
committerGitHub <noreply@github.com>2018-07-16 12:22:36 +0300
commite08ddccc35f1c199f503861bb63c6f7bcef2a9f6 (patch)
tree6c6bb374b2f3820f88f03846db7ab40b6eb75c6a
parentfe9f2f4bb63b379a532016c28c3771510061a47d (diff)
parent7a7a61998c60b8114994b29d5f649637be8139e0 (diff)
downloadmariadb-git-e08ddccc35f1c199f503861bb63c6f7bcef2a9f6.tar.gz
Merge pull request #793 from codership/10.1-MDEV-15442
MDEV-15442 xtrabackup-v2 SST donor stuck in DONOR/DESYNCED state when…
-rw-r--r--scripts/wsrep_sst_mariabackup.sh23
-rw-r--r--scripts/wsrep_sst_rsync.sh2
-rw-r--r--scripts/wsrep_sst_xtrabackup-v2.sh23
3 files changed, 46 insertions, 2 deletions
diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh
index 549161aa8f3..ea0a6fc0d51 100644
--- a/scripts/wsrep_sst_mariabackup.sh
+++ b/scripts/wsrep_sst_mariabackup.sh
@@ -644,6 +644,27 @@ send_donor()
}
+monitor_process()
+{
+ local sst_stream_pid=$1
+
+ while true ; do
+
+ if ! ps --pid "${WSREP_SST_OPT_PARENT}" &>/dev/null; then
+ wsrep_log_error "Parent mysqld process (PID:${WSREP_SST_OPT_PARENT}) terminated unexpectedly."
+ kill -- -"${WSREP_SST_OPT_PARENT}"
+ exit 32
+ fi
+
+ if ! ps --pid "${sst_stream_pid}" &>/dev/null; then
+ break
+ fi
+
+ sleep 0.1
+
+ done
+}
+
if [[ ! -x `which $INNOBACKUPEX_BIN` ]];then
wsrep_log_error "${INNOBACKUPEX_BIN} not in path: $PATH"
exit 2
@@ -932,7 +953,7 @@ then
MAGIC_FILE="${DATA}/${INFO_FILE}"
wsrep_log_info "Waiting for SST streaming to complete!"
- wait $jpid
+ monitor_process $jpid
get_proc
diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh
index 3d76d1780e2..81120b66d5a 100644
--- a/scripts/wsrep_sst_rsync.sh
+++ b/scripts/wsrep_sst_rsync.sh
@@ -329,6 +329,8 @@ EOF
then
wsrep_log_error \
"Parent mysqld process (PID:$MYSQLD_PID) terminated unexpectedly."
+ kill -- -"${MYSQLD_PID}"
+ sleep 1
exit 32
fi
diff --git a/scripts/wsrep_sst_xtrabackup-v2.sh b/scripts/wsrep_sst_xtrabackup-v2.sh
index 00efdaeebcf..99bbabbe9be 100644
--- a/scripts/wsrep_sst_xtrabackup-v2.sh
+++ b/scripts/wsrep_sst_xtrabackup-v2.sh
@@ -801,6 +801,27 @@ check_for_version()
fi
}
+monitor_process()
+{
+ local sst_stream_pid=$1
+
+ while true ; do
+
+ if ! ps --pid "${WSREP_SST_OPT_PARENT}" &>/dev/null; then
+ wsrep_log_error "Parent mysqld process (PID:${WSREP_SST_OPT_PARENT}) terminated unexpectedly."
+ kill -- -"${WSREP_SST_OPT_PARENT}"
+ exit 32
+ fi
+
+ if ! ps --pid "${sst_stream_pid}" &>/dev/null; then
+ break
+ fi
+
+ sleep 0.1
+
+ done
+}
+
if [[ ! -x `which $INNOBACKUPEX_BIN` ]];then
wsrep_log_error "innobackupex not in path: $PATH"
@@ -1102,7 +1123,7 @@ then
MAGIC_FILE="${DATA}/${INFO_FILE}"
wsrep_log_info "Waiting for SST streaming to complete!"
- wait $jpid
+ monitor_process $jpid
get_proc