Content-Type: multipart/mixed; boundary="===============4287802395887980612==" MIME-Version: 1.0 Date: Sat, 26 Jun 2010 21:08:07 -0000 From: Ingo Struewing Subject: bzr commit into mysql-5.1-meb branch (ingo.struewing:3483) Bug#54621 To: commits-mysql-enterprise-backup-ext@sun.com User-Agent: Bazaar (2.1.1) X-Bug: 54621 X-CSetKey: ingo.struewing@sun.com-20100626210801-vl5gdeco892h7s03 X-bzr-action: commit X-bzr-meta-0: ver 2.1.1 X-bzr-meta-1: plugin gtk ver (0, 98, 0, 'final', 1) X-bzr-meta-10: plugin bzrtools ver (2, 1, 0, 'final', 0) X-bzr-meta-11: plugin fix277537 ver None X-bzr-meta-12: plugin netrc_credential_store ver (2, 1, 1, 'final', 0) X-bzr-meta-13: plugin mysql_plugins ver (0, 4, 2, 'final', 0) X-bzr-meta-2: plugin launchpad ver (2, 1, 1, 'final', 0) X-bzr-meta-3: plugin dbus ver (0, 1, 0, 'dev', 0) X-bzr-meta-4: plugin difftools ver (0, 91, 0, 'final', 0) X-bzr-meta-5: plugin qbzr ver (0, 18, 6, 'final', 0) X-bzr-meta-6: plugin tetard ver None X-bzr-meta-7: plugin danny_plugins ver None X-bzr-meta-8: plugin extmerge ver None X-bzr-meta-9: plugin news_merge ver (2, 1, 1, 'final', 0) X-bzr-revid: ingo.struewing@sun.com-20100626210801-vl5gdeco892h7s03 X-bzr-revno: 3483 --===============4287802395887980612== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/mydev/bzrroot/mysql-5.1-meb-bugfixing/ based on revid:rafal.somla@sun.com-20100623074039-xm0juqgrtra6l6ev 3483 Ingo Struewing 2010-06-26 Bug#54621 - Use of pipe in the backup dir name shutsdown the server when performing MEB This bug report revealed three problems. 1. Shell metacharacters in names that are used for --exec need to be quoted. 2. innobackup did not quote its backup_dir parameter correctly. 3. innobackup stopped working if its stdout went to a broken pipe. This patch addresses problem #1. It includes a fixed test case for regression tests. Problems #2 and #3 are fixed in a different patch against the innobackup svn repository. Also included are improved clean up and the new NEED_INNODB_BUILTIN feature. @ mysql-test/suite/meb/include/backward_compat.inc Improved cleanup. @ mysql-test/suite/meb/include/cleanup_meb.inc Improved cleanup. @ mysql-test/suite/meb/include/have_meb.inc Added feature NEED_INNODB_BUILTIN. @ mysql-test/suite/meb/r/innobackup_shutdown.result Bug#54621 - Use of pipe in the backup dir name shutsdown the server when performing MEB New test result. @ mysql-test/suite/meb/t/innobackup_shutdown.test Bug#54621 - Use of pipe in the backup dir name shutsdown the server when performing MEB New test case. added: mysql-test/suite/meb/r/innobackup_shutdown.result mysql-test/suite/meb/t/innobackup_shutdown.test modified: mysql-test/suite/meb/include/backward_compat.inc mysql-test/suite/meb/include/cleanup_meb.inc mysql-test/suite/meb/include/have_meb.inc === modified file 'mysql-test/suite/meb/include/backward_compat.inc' --- a/mysql-test/suite/meb/include/backward_compat.inc 2010-06-22 10:54:04 +0000 +++ b/mysql-test/suite/meb/include/backward_compat.inc 2010-06-26 21:08:01 +0000 @@ -37,6 +37,7 @@ let $MYSQL_MINOR= `select substring_inde let $TMP_DIR= $MYSQLTEST_VARDIR/tmp; let $WORK_DIR= $TMP_DIR/backup; let $BACKUP_PATH= $MYSQL_TEST_DIR/suite/meb/std_data/backups/mysql-$MYSQL_MAJOR.$MYSQL_MINOR/$BACKUP; +let $MYSQLD_DATADIR = `SELECT @@datadir`; let $port= `select @@port`; @@ -94,6 +95,10 @@ let $BACKUP_CNF=$WORK_DIR/backup-my.cnf; # Note: innobackup --copy-back does overwrite existing files # --exec $INNOBACKUP --copy-back $SERVER_CNF $WORK_DIR >>$LOG_FILE 2>&1 +# +# We do not want the files data.dump and innobackup.log in datadir +--remove_file $MYSQLD_DATADIR/data.dump +--remove_file $MYSQLD_DATADIR/innobackup.log --echo == Restarting server with --innodb_file_per_table option. --remove_file $SERVER_CNF @@ -129,3 +134,6 @@ let $DUMP_FILE= $TMP_DIR/data.dump; # --exec perl suite/meb/include/rmtree.pl $WORK_DIR --source suite/meb/include/extreme_drop.inc +--remove_file $TMP_DIR/data.dump +--remove_file $TMP_DIR/my_ifpt.cnf +--remove_file $TMP_DIR/my_orig.cnf === modified file 'mysql-test/suite/meb/include/cleanup_meb.inc' --- a/mysql-test/suite/meb/include/cleanup_meb.inc 2010-06-04 16:44:06 +0000 +++ b/mysql-test/suite/meb/include/cleanup_meb.inc 2010-06-26 21:08:01 +0000 @@ -6,6 +6,31 @@ --connection default # +# Try to clean up left over files. +# Some tests modify the variables, defined by have_meb.inc. +# So this is a lot of guessing here. +# +--let $TMPDIR = `SELECT @@tmpdir` +# +# Try to clean up BACKUP_CNF +# +--error 0, 1 +--remove_file $BACKUP_CNF +--error 0, 1 +--remove_file $TMP_DIR/ib.cnf +--error 0, 1 +--remove_file $MYSQL_TMP_DIR/ib.cnf +--error 0, 1 +--remove_file $TMPDIR/ib.cnf +# +# Try to clean up BACKUP_DIR +# +--exec perl suite/meb/include/rmtree.pl $BACKUP_DIR +--exec perl suite/meb/include/rmtree.pl $TMP_DIR/backup +--exec perl suite/meb/include/rmtree.pl $MYSQL_TMP_DIR/backup +--exec perl suite/meb/include/rmtree.pl $TMPDIR/backup + +# # Ibbackup creates a table mysql.ibbackup_binlog_marker. If a previous # test case forgot to drop it, it is done here. # This is not required if we save and restore datadir at begin and end === modified file 'mysql-test/suite/meb/include/have_meb.inc' --- a/mysql-test/suite/meb/include/have_meb.inc 2010-06-04 16:44:06 +0000 +++ b/mysql-test/suite/meb/include/have_meb.inc 2010-06-26 21:08:01 +0000 @@ -26,8 +26,8 @@ if (! -f "$ENV{'INNOBACKUP'}") EOF # -# This can be used to run with innodb_plugin only. -# Export NEED_INNODB_PLUGIN=1 before running the test. +# This can be used to run with innodb_plugin or builtin only. +# Export NEED_INNODB_PLUGIN=1 or NEED_INNODB_BUILTIN=1 before running the test. # let $HAVE_INNODB_PLUGIN= `SELECT (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%') FROM information_schema.plugins @@ -45,6 +45,13 @@ let $HAVE_INNODB_PLUGIN= `SELECT (PLUGIN # --enable_query_log # } #} +if ($HAVE_INNODB_PLUGIN) +{ + if ($NEED_INNODB_BUILTIN) + { + --skip Need InnoDB builtin + } +} if (!$HAVE_INNODB_PLUGIN) { if ($NEED_INNODB_PLUGIN) === added file 'mysql-test/suite/meb/r/innobackup_shutdown.result' --- a/mysql-test/suite/meb/r/innobackup_shutdown.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/meb/r/innobackup_shutdown.result 2010-06-26 21:08:01 +0000 @@ -0,0 +1,26 @@ +# +# Precautionary clean up. +# +# +# Run innobackup for backup. +... +# Success + +# +# Stop server. + +# +# Run innobackup for apply log. +... +# Success + +# +# Clear datadir. +# +# Run innobackup for copy back. +... +# Success + +# +# Restart server. + === added file 'mysql-test/suite/meb/t/innobackup_shutdown.test' --- a/mysql-test/suite/meb/t/innobackup_shutdown.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/meb/t/innobackup_shutdown.test 2010-06-26 21:08:01 +0000 @@ -0,0 +1,111 @@ +# +# Bug#54621 - Use of pipe in the backup dir name +# shuts down the server when performing MEB +# + +# +# Perl version of innobackup does not work on Windows (unless under Cygwin). +--source include/not_windows.inc +# +# innobackup needs to connect to the server. Not supported in embedded. +--source include/not_embedded.inc +# +# This test case needs InnoDB. +--source include/have_innodb.inc +# +# Check for existence of innobackup and set up environment for it. +# The bug is fixed in innobackup 1.7.1-rc (MEB 3.5) only. +--source suite/meb/include/have_meb_3_5.inc + +# +# Set path names. +# Note that we include the quotes in $BACKUP_TARGET_DIR so that we +# do not need to quote every use of it. +# Note: If not quoting shell meta characters, we would issue completely +# different, and mostly devastating commands at every use of +# $BACKUP_TARGET_DIR. See explanations in Bug#54621. +# +--let $BACKUP_TARGET_DIR = "$MYSQLTEST_VARDIR/tmp/meb_bup_|dir" +--let $BACKUP_LOG = $MYSQLTEST_VARDIR/tmp/backup.log +--let $REPLAY_LOG = $MYSQLTEST_VARDIR/tmp/replay.log +--let $CPBACK_LOG = $MYSQLTEST_VARDIR/tmp/cpback.log +--let $MYSQLD_DATADIR = `SELECT @@datadir` + +--echo # +--echo # Precautionary clean up. +--echo # +--exec perl suite/meb/include/rmtree.pl $BACKUP_TARGET_DIR + +# +# Backup. +# +--echo # +--echo # Run innobackup for backup. +--let $options = --port=$MASTER_MYPORT --user=root --no-timestamp +--exec $INNOBACKUP $options $SERVER_CNF $BACKUP_TARGET_DIR > $BACKUP_LOG 2>&1 +--echo ... +# If not success, mysqltest would exit after exec. +--echo # Success +--echo + +# +# Stop server. +# +--echo # +--echo # Stop server. +--source suite/meb/include/stop_mysqld.inc +--echo + +# +# Prepare for Restore. +# Apply InnoDB log file. +# +--echo # +--echo # Run innobackup for apply log. +--let $options = --apply-log +--exec $INNOBACKUP $options $SERVER_CNF $BACKUP_TARGET_DIR > $REPLAY_LOG 2>&1 +--echo ... +# If not success, mysqltest would exit after exec. +--echo # Success +--echo + +# +# Restore. +# Replace files by removing old datadir and copying back files from backup. +# +--echo # +--echo # Clear datadir. +--exec perl suite/meb/include/rmtree.pl $MYSQLD_DATADIR +--mkdir $MYSQLD_DATADIR + +--echo # +--echo # Run innobackup for copy back. +--let $options = --copy-back +--exec $INNOBACKUP $options $SERVER_CNF $BACKUP_TARGET_DIR > $CPBACK_LOG 2>&1 +--echo ... +# If not success, mysqltest would exit after exec. +--echo # Success +--echo + +# +# Restart server. +# +--echo # +--echo # Restart server. +--source suite/meb/include/restart_mysqld.inc +--echo + +# +# Clean up. +# +--exec perl suite/meb/include/rmtree.pl $BACKUP_TARGET_DIR +# +# These files are intentionally left over. They will be kept in +# $MYSQLTEST_VARDIR/tmp after the tests so that they can be downloaded +# from Pushbuild in the test archive. +#--remove_file $BACKUP_LOG +#--remove_file $REPLAY_LOG +#--remove_file $CPBACK_LOG +# +--source suite/meb/include/cleanup_meb.inc +--exit --===============4287802395887980612== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/ingo.struewing@sun.com-20100626210801-vl5gdeco892h7s03.bundle" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: ingo.struewing@sun.com-20100626210801-vl5gdeco892h7s03 # target_branch: file:///home/mydev/bzrroot/mysql-5.1-meb-bugfixing/ # testament_sha1: 4e23a80c9c9417071b2a51ce2a9eb83ba219ac54 # timestamp: 2010-06-26 23:08:10 +0200 # source_branch: file:///home/mydev/bzrroot/mysql-5.1-meb/ # base_revision_id: rafal.somla@sun.com-20100623074039-\ # xm0juqgrtra6l6ev # # Begin bundle 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 yRThQkHsfQ14 --===============4287802395887980612==--