MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Leonard Zhou Date:March 11 2009 4:48am
Subject:bzr commit into mysql-5.1-bugteam branch (zhou.li:2825) Bug#39858
View as plain text  
#At file:///home/zhl/mysql/rep/5.1/bug39858/

 2825 Leonard Zhou	2009-03-11
      BUG#39858 rpl.rpl_rotate (rpl.rpl_rotate_logs) failed on pushbuild: result mismatch
      
      The method to purge binary log files produces different results in some platfroms.
      The reason is that the purge time is caculated based on table modified time and
      that can't guarantee to purge master-bin.000002 in all platforms.(eg. windows)
      
      Use a new way that sets the time to purge binlog file 1 second after the last modified time of master-bin.000002.
      That can be sure that the file is always deleted in any platform.
modified:
  mysql-test/suite/rpl/r/rpl_rotate_logs.result
  mysql-test/suite/rpl/t/rpl_rotate_logs.test

per-file messages:
  mysql-test/suite/rpl/r/rpl_rotate_logs.result
    Test result
  mysql-test/suite/rpl/t/rpl_rotate_logs.test
    Change 'purge time' 1 sencond after the last modified time of master-bin.000002.
=== modified file 'mysql-test/suite/rpl/r/rpl_rotate_logs.result'
--- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result	2008-01-14 07:38:02 +0000
+++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result	2009-03-11 04:46:10 +0000
@@ -87,9 +87,7 @@ show binary logs;
 Log_name	File_size
 master-bin.000002	#
 master-bin.000003	#
-select @time_for_purge:=DATE_ADD(UPDATE_TIME, INTERVAL 1 SECOND)
-from information_schema.tables
-where TABLE_SCHEMA="test" and TABLE_NAME="t2";
+SELECT @time_for_purge:=DATE_ADD('tmpval', INTERVAL 1 SECOND);
 purge master logs before (@time_for_purge);
 show binary logs;
 Log_name	File_size

=== modified file 'mysql-test/suite/rpl/t/rpl_rotate_logs.test'
--- a/mysql-test/suite/rpl/t/rpl_rotate_logs.test	2008-02-28 11:21:44 +0000
+++ b/mysql-test/suite/rpl/t/rpl_rotate_logs.test	2009-03-11 04:46:10 +0000
@@ -112,14 +112,31 @@ source include/show_master_logs.inc;
 purge binary logs to 'master-bin.000002';
 source include/show_binary_logs.inc;
 
-# Calculate time to use in "purge master logs before" by taking
-# last modification time of t2 and adding 1 second
-# This is donw in order to handle the case where file system
-# time differs from mysqld's time
+# Set the purge time 1 second after the last modify time of master-bin.000002.
+let $MYSQLD_DATADIR= `select @@datadir`;
+--exec stat $MYSQLD_DATADIR/master-bin.000002 >$MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.000002
+--exec echo > $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.tmp
+perl;
+open F, $ENV{'MYSQLTEST_VARDIR'}.'/tmp/rpl_rotate_logs.000002' or die "Tmp file rpl_rotate_logs.000002 not found";
+open F2, ">>".$ENV{'MYSQLTEST_VARDIR'}.'/tmp/rpl_rotate_logs.tmp' or die "Tmp file rpl_rotate_logs.tmp not found";
+while (<F>)
+{
+  if (/Modify: ([^ ]*) ([^ ]*)\./)
+  {
+    printf F2 ("let \$tmpval = %s %s;",$1,$2);
+  }
+}
+close F;
+close F2;
+EOF
+
+--source $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.tmp
+remove_file $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.000002;
+remove_file $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.tmp;
+
 --disable_result_log
-select @time_for_purge:=DATE_ADD(UPDATE_TIME, INTERVAL 1 SECOND)
-  from information_schema.tables
-    where TABLE_SCHEMA="test" and TABLE_NAME="t2";
+--replace_result $tmpval tmpval
+--eval SELECT @time_for_purge:=DATE_ADD('$tmpval', INTERVAL 1 SECOND)
 --enable_result_log
 
 purge master logs before (@time_for_purge);

Thread
bzr commit into mysql-5.1-bugteam branch (zhou.li:2825) Bug#39858Leonard Zhou11 Mar
  • Re: bzr commit into mysql-5.1-bugteam branch (zhou.li:2825) Bug#39858He Zhenxing11 Mar