Commit c78fc8b1 authored by Nirbhay Choubey's avatar Nirbhay Choubey

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.
parent dcb7996c
......@@ -18,8 +18,10 @@
# This is a reference script for rsync-based state snapshot tansfer
RSYNC_PID=
RSYNC_CONF=
RSYNC_PID= # rsync pid file
RSYNC_CONF= # rsync configuration file
RSYNC_REAL_PID= # rsync process id
OS=$(uname)
[ "$OS" == "Darwin" ] && export -n LD_LIBRARY_PATH
......@@ -32,10 +34,12 @@ wsrep_check_programs rsync
cleanup_joiner()
{
local PID=$(cat "$RSYNC_PID" 2>/dev/null || echo 0)
wsrep_log_info "Joiner cleanup. rsync PID: $PID"
[ "0" != "$PID" ] && kill $PID && sleep 0.5 && kill -9 $PID >/dev/null 2>&1 \
|| :
wsrep_log_info "Joiner cleanup. rsync PID: $RSYNC_REAL_PID"
[ "0" != "$RSYNC_REAL_PID" ] && \
kill $RSYNC_REAL_PID && \
sleep 0.5 && \
kill -9 $RSYNC_REAL_PID >/dev/null 2>&1 || \
:
rm -rf "$RSYNC_CONF"
rm -rf "$MAGIC_FILE"
rm -rf "$RSYNC_PID"
......@@ -45,6 +49,7 @@ cleanup_joiner()
fi
}
# Check whether rsync process is still running.
check_pid()
{
local pid_file=$1
......
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