Content-Type: multipart/mixed; boundary="===============4287802395887980612=="
MIME-Version: 1.0
Date: Sat, 26 Jun 2010 21:08:07 -0000
From: Ingo Struewing <ingo.struewing@sun.com>
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
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWXsfQ14ABzDfgEAyXWf//3/v
/6D////+YA7uVdtadaHy9tLe6vbSlbz56q1fffe9Vde9497LX1Tjut11lm7ta9HvWd8MUTU2knon
6EwVPJp6mnqMk00Gh6R6jQAGj0JiCSSGmFNoAon6lPak3qQ/UE9EYhpkMgAGIaDJMTSNNVPAhqe0
p6nqDQAAZGmgAAAAkRJpoiYI0yaaKfoBDEKN5U2kM0j1AGgxAikhNpCeqemJpqeRPUbU/VA00NBo
GQAaZHqACKImgIamI001TxTaKemyKNPUAPUBo0A9QBF71j/PUGJAPf8W3q2uzREgLvCf5/veeEJF
o39F04I7xn6tep9jNEx+GzL7/trlNDSFhMChjY04IiEzS5NrhADwLSpa5zCBSww/G6DW4tclkWZN
GXdeEWrdYKFDMGAAydFu4MAYGOYrSosJqdK6d82LNtqzVo/d7qcmW5pTByJenZu6KZAaGNg2fnd/
WaXljtVMjSTkSjSaP5e4OfyNiMRgi1HSDhajz0ggbccJtqvtUJ1TwYTm+c7aKHE7FlEPUozIgHqK
nWL9UIBcK1j6aVsRZeKbaGxsvDR+sPxRjXJv7rqMHTpU8KDU4MQQHEg7jibp8bF5MDQ5X3ymwsBr
OeYIZEBStbXV4Yd+UPy6sN2WuIu5hc0pbaPqYENH7AefqV0WH3qay2VXcgkH16KKmfQM4EZ0e3Dk
lr+1J9CllqljF4udxBxYUsUdskyaLaMeSAeMYRhOWcAxUPLAHjSLYxV2FWzyZLd85PF4Wri3RkUC
GGe6M2HM4Fkm/Y+Mq4YWOa+mTGOhKOakHNGFOeVKNnLAHcK3tFkY6z79kVM5nRhJQMyWUIpky1gf
HxVkwFWqJzttxkiRu3I8yx0EpJIfaFNaghqhmAgQqgMlcloe+HKtBMXqGFCyyUXI8AurNmr+Yrv4
33dkhOtWIPg++vBHhzcTzZusCrAXmICQGCbAbBsbbbQ2mmkmtiGAfJqjQczUsEeaaP1eT07NAcfO
i8XEgBsQMfeNNo9WlPP/vv/KYpQmlKGbyfDT6EPQfQYFvvPL35/5lRPiXZaVQt65+ES+LMwDWAMk
+q4fZWwvsAq7zn68idNnnabtdda7fK3B2eMRjEQ802WFZbuxV+ONPPi8815xPziPdpsBmBuNxjv5
eJ8U++atwgjhMkU9iDDgRRRCVNFTB2rkeAeCBJvTk26ryImhNIJchbZVStxy0qAWuILTCCiJojPi
lZthDDpa5OSEbayAkx7UCQEmgFCzxR9TL3WrjW4kCNstxUlF5snjk32FjPuLLVqc/f4nUaWvt7Hr
PILuKH7k8wN4RScY8jTYNdk2JX+3r25PKoCI+HNZsS0CjnhYH5Q7BJhlmltjTNIlHGSwPIqI4JYx
nLjAHeHBZHiTNTS5Q3DeJyYtljOIOmiwrLih07LVbLBT16jJuOmHGwdLd1AE3bliBeZshnVsy9OP
t17CsBxVG0EcDJbQpbOJAqs16IAVrUeNcMJe5eCvIt18qD1u8Yey1Ug6rgLmrFaDFeBzOFUO0qdQ
iljnmiVOjZIUtT9UGGI3xEqatzhx2g/MyNzcXdjeWvOBclxtN7SshfM3FaBMVVxGuCLDYeOSJy1M
MZJwTYWpeVhI280sOneFk53mZt7MpNeHjHLOGo0ESXwhG9UNDSFhrBWsLtHWjyCqJkVMmsjtdXQb
DFhQqzM+nJVZXxMEw8gGhoMaYGYlyT7aaLu23cCSRzGSJFuAdxcYUb6mcGBMniWkRXmpaXKllaUx
h9paXFqfuvCnnCk8OqSxOVqvG4KBmbQ0iJ0EmgGEK0tWMjMvGHI4iTRpiZ1aC9pnOjw2EGPI2klL
TedYuZak46hnvqbzudxKsU8MXOUGU0dT69VldfrfeJVvMZlkjO9+hBbDNmv09aUrxRww6ZjEHUJq
6mBCZhZmyqFKZSMk0FhX0FIopS+tb2lREUQ4FgBWr+zsRqbEezMGLY+VuCIDyQ1AynvN/Z96MFmX
lC/A3G0Gky6yJyDsSAOj5j9eh7W7h50vNAZhiCDpavpEA+58YVjTOLGOdEqStqaUoHvNgyb0REFk
kiCYmCYP0JsHBNybaNE6J82zDweA/YBO68lqFYGw24CZOCKG0cirYGRgOlEyOwdW9CU+YVJMbw+3
QS+qN43TDilENUKZyGSGVDBia3M2uA/VQUrClgX4zI4VXOm1gDszWwPubnNG1yXK8trUdoGeqGIU
Y2WAoiy4m2FTeH/BBIWRkWMmkShenxsHEve4ZOQELIbo031mZJm15UDaYJl5p8vTgCGvGCD5Qgo2
002yYmv0/bci4QxP3rlBqOwsLidYRGwc0ZQOwD29wPf7Br5ugdNIgMMMgoRAupgRgPNPJGAsz6y4
gFqOgTgPpkEb9wVkyocnK14PH6XACj1yGvEbzzISSFCD7MALCxWtIRvSnihIE4YZmJeBYdvK7Vyk
F5fLU/ZBQqXatCyfctwSDQNOHDEb5e+Pv6jKXh1mwj5nA6srf0NL3d2yffg6LxfD4oyBRGHI+s5c
H1dJPYcguOckvk3mzEyGdDP0QbaaVoYaLpXUgxLHWU4YZ5WEaEQFYUSoHh4xHdOCp9iYCwiWu5og
Odl/sL8RmDE+0IE4byuW0crVDTr3+FdS7shdZNKwmaZuLmJpdJuQhJI4IyM0feci680NJ9egnehH
A9olM6Vl00pOvLHgJmav8XIdH/pKsorspYwEKUbpxwaq8VxbycucA5dRFXhqhJGRNwvkahkAq5dq
XQyOhFzNNCMDMCQkkZnm12xzhhGCKg7Fi2GqZgEqe7vMr7zyqcz3HoeRW31B0NvZnNtp7XQjX7qd
qUpCaGIOIkYgQtTlNUCheq+Yu46zrPQRx3C9V07Ipozy356wbsC7tuvO4waSWXn4AYHZ2dnqxCEt
8m4l9MikeMqNH+nbF0effmhVFge6u+7saU6lCWD9Wr9VQq2Cjqnfk4HQEtL14BUxrcpJjqF3nd1V
I9NPUNYajr5xirQ3tKSQy2E8srFI08C0dZIHf4mghwUuCIDRTcZXp1aRg/mEBy8PJx0HA9vce4vD
2HOSVWBJh7jrXebioJwYhwN4gbc3EjnoKoYqPkBe9HjhBDkOEa2vLmISJZTgGMlDUF3Ii7mRZJsf
1Q2NEFGopEK9wWBbxWlIhwvdcHO7XJvGsjVJNItHeCZIev1t68JK3B9jQrvnTx1Ba+9psxSFFRPD
vI0GPHpLWNy7U6YRidlpUBVFfid908CoZJGKwbQPhCKeiSI5loUMY0DMQPSuOfRPkHTxbMPjOv0s
gOkzmgTRHfpQpbpSIhw3tp2v6X36s4jYJu/CmqdBYy+JEMgT1JB3AG/Kh138gqnj7X3vkH0wG5x9
M/oeYF+eCiYLm1AzHmHkF48BbfBr62D56hm69baNDpQB0IE3J7oQg3ZniVgM3Luh22RSUH4j6Vw+
OLKbMvO9YLWZgkinhbZcF6TLaKcop12M2hpMYUwmPSDcARFlJ1RxGhU6QTjITyaFmQo5gdYiQqnS
8paTS7ChAdxo4JjGZDoMUgyTwpQPWEWW0+iXXDVEYQBZIZWoIs1DSQxMCrI6Djm8L3tRQAOqEDhb
HPAJs2UbWFcANS9btDSAJQEQsgJMtfZEepuDquJEiOLaqQLXGLZS/RCDzYO6c96FyFJgvRMtAkCu
5H4SWrVUGYG/4CoHEUCsIbC4Bs3bSUq9KLgefl06Gj1YbiBlHiGlLjsCzrORKA6lepG2tUEoGLCM
p7nsaLWFMDn4ykLekspvHhVb6ZLylkJxty39cTzzCmm2glZdqcRhMWBr0TEytbxu6pqb6XJlS5iy
ITBBKFlaQyiKAoihD+EEMbDta2noiKLcrzjDACPDZqSnQmiGFjRqqPqO3zml4JAtIkkKGNZ0XVca
2bCThRCLcb1IELgvfpG3f0OP9crcQhyzWDRiInqZzENpVRcU9FJC3i6e9dzWyuhxkmW4iCmaaUhw
RF1oauwtUw6C0sNZY0Oh9oTLz1UviTpAcUurInvcn0bADJ6I3LFgl35HWD0uaRikE2RqwB1XzXZ3
13gXGSBDR1umCBIKP6kSlvHG4THLQxvVCmGPcgbQ1yiLgJAMtJdGbsNMpnSkdJJLYWom+5PzFNmW
KT5iU2XMQN6wRsEq5gEWvnS2EYzuDt1L+KYPZPakyjTZuGgDFtl/YXl12zU4DXXZwTlsQ+tuBxN0
bR3P0rS1kC2ySYtRuWnCT8IzGbvbapLXgELj2JFUNQBlDPJm8o2lCNX2z8UfJFBtibE2N8YyBogT
EZLzY4V3ysMnfop4hMxAco6CfY4DTImDMCUmMTLepF9Sb0uoBsF3fnaOI/gceCQHN6xJTp6YCFNq
sDBw4jxLheAQmrH8IU+RxTvTJ3HCJ8AVMZFJqQ0Gc2REG9KpHe1jkjfLliRGUHUeTFrBr81qZ/xd
yRThQkHsfQ14


--===============4287802395887980612==--