MTR: rsync process is left running if pid file is removed
MTR drops the datadir in the event of a test failure. In case mysqld is running as a Galera node and a failure occurs while the SST is in progress, the rsync pid file gets removed as part of the cleanup and wsrep_sst_rsync, which relies on this file, fails to kill the rsync. Fixed by using the cached $RSYNC_REAL_PID to kill rsync daemon.
This commit is contained in:
parent
dcb7996cb7
commit
c78fc8b1ea
@ -18,8 +18,10 @@
|
|||||||
|
|
||||||
# This is a reference script for rsync-based state snapshot tansfer
|
# This is a reference script for rsync-based state snapshot tansfer
|
||||||
|
|
||||||
RSYNC_PID=
|
RSYNC_PID= # rsync pid file
|
||||||
RSYNC_CONF=
|
RSYNC_CONF= # rsync configuration file
|
||||||
|
RSYNC_REAL_PID= # rsync process id
|
||||||
|
|
||||||
OS=$(uname)
|
OS=$(uname)
|
||||||
[ "$OS" == "Darwin" ] && export -n LD_LIBRARY_PATH
|
[ "$OS" == "Darwin" ] && export -n LD_LIBRARY_PATH
|
||||||
|
|
||||||
@ -32,10 +34,12 @@ wsrep_check_programs rsync
|
|||||||
|
|
||||||
cleanup_joiner()
|
cleanup_joiner()
|
||||||
{
|
{
|
||||||
local PID=$(cat "$RSYNC_PID" 2>/dev/null || echo 0)
|
wsrep_log_info "Joiner cleanup. rsync PID: $RSYNC_REAL_PID"
|
||||||
wsrep_log_info "Joiner cleanup. rsync PID: $PID"
|
[ "0" != "$RSYNC_REAL_PID" ] && \
|
||||||
[ "0" != "$PID" ] && kill $PID && sleep 0.5 && kill -9 $PID >/dev/null 2>&1 \
|
kill $RSYNC_REAL_PID && \
|
||||||
|| :
|
sleep 0.5 && \
|
||||||
|
kill -9 $RSYNC_REAL_PID >/dev/null 2>&1 || \
|
||||||
|
:
|
||||||
rm -rf "$RSYNC_CONF"
|
rm -rf "$RSYNC_CONF"
|
||||||
rm -rf "$MAGIC_FILE"
|
rm -rf "$MAGIC_FILE"
|
||||||
rm -rf "$RSYNC_PID"
|
rm -rf "$RSYNC_PID"
|
||||||
@ -45,6 +49,7 @@ cleanup_joiner()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check whether rsync process is still running.
|
||||||
check_pid()
|
check_pid()
|
||||||
{
|
{
|
||||||
local pid_file=$1
|
local pid_file=$1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user