MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:konstantin Date:August 11 2007 10:07am
Subject:bk commit into 5.1 tree (kostja:1.2564) BUG#29049
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of kostja. When kostja does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-08-11 14:07:49+04:00, kostja@bodhi.(none) +2 -0
  A fix for Bug#29049 lock_multi fails in rare case.
  The patch changes the test case only.
  The fix is to replace all 'sleep's with wait_condition. This makes
  the test deterministic and also ~300 times faster.

  mysql-test/r/lock_multi.result@stripped, 2007-08-11 14:07:47+04:00, kostja@bodhi.(none) +5 -3
    Update result.

  mysql-test/t/lock_multi.test@stripped, 2007-08-11 14:07:47+04:00, kostja@bodhi.(none) +57 -33
    A fix for Bug#29049 lock_multi fails in rare case.
    Replace all 'sleep's with wait_condition. This makes
    the test deterministic and also ~300 times faster.

diff -Nrup a/mysql-test/r/lock_multi.result b/mysql-test/r/lock_multi.result
--- a/mysql-test/r/lock_multi.result	2007-08-05 13:55:29 +04:00
+++ b/mysql-test/r/lock_multi.result	2007-08-11 14:07:47 +04:00
@@ -13,9 +13,9 @@ insert into t1 values (1);
 lock tables t1 read;
 update low_priority t1 set n = 4;
 select n from t1;
-unlock tables;
 n
 1
+unlock tables;
 drop table t1;
 create table t1 (a int, b int);
 create table t2 (c int, d int);
@@ -43,6 +43,7 @@ insert t1 select * from t2;
 drop table t2;
 ERROR 42S02: Table 'test.t2' doesn't exist
 drop table t1;
+End of 4.1 tests
 create table t1(a int);
 lock tables t1 write;
 show columns from t1;
@@ -91,10 +92,11 @@ DROP DATABASE mysqltest_1;
 ERROR HY000: Can't drop database 'mysqltest_1'; database doesn't exist
 create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) engine=innodb;
 lock tables t1 write;
-alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
-alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
+alter table t1 auto_increment=0;
+alter table t1 auto_increment=0;
 unlock tables;
 drop table t1;
+End of 5.0 tests
 create table t1 (i int);
 lock table t1 read;
 update t1 set i= 10;;
diff -Nrup a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test
--- a/mysql-test/t/lock_multi.test	2007-08-05 13:55:29 +04:00
+++ b/mysql-test/t/lock_multi.test	2007-08-11 14:07:47 +04:00
@@ -16,10 +16,16 @@ lock tables t1 write;
 connection writer;
 send update low_priority t1 set n = 4;
 connection reader;
---sleep 2
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "update low_priority t1 set n = 4";
+--source include/wait_condition.inc
 send select n from t1;
 connection locker;
---sleep 2
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "select n from t1";
+--source include/wait_condition.inc
 unlock tables;
 connection writer;
 reap;
@@ -34,15 +40,15 @@ lock tables t1 read;
 connection writer;
 send update low_priority t1 set n = 4;
 connection reader;
---sleep 2
-send select n from t1;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "update low_priority t1 set n = 4";
+--source include/wait_condition.inc
+select n from t1;
 connection locker;
---sleep 2
 unlock tables;
 connection writer;
 reap;
-connection reader;
-reap;
 drop table t1;
 
 #
@@ -58,13 +64,9 @@ insert into t1 values(2,2);
 insert into t2 values(1,2);
 lock table t1 read;
 connection writer;
---sleep 2
-send update t1,t2 set c=a where b=d;
+update t1,t2 set c=a where b=d;
 connection reader;
---sleep 2
 select c from t2;
-connection writer;
-reap;
 connection locker;
 drop table t1;
 drop table t2;
@@ -73,7 +75,7 @@ drop table t2;
 # Test problem when using locks on many tables and droping a table that
 # is to-be-locked by another thread
 #
-
+#
 connection locker;
 create table t1 (a int);
 create table t2 (a int);
@@ -81,6 +83,10 @@ lock table t1 write, t2 write;
 connection reader;
 send insert t1 select * from t2;
 connection locker;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "insert t1 select * from t2";
+--source include/wait_condition.inc
 drop table t2;
 connection reader;
 --error 1146
@@ -99,6 +105,10 @@ lock table t1 write, t2 write, t1 as t1_
 connection reader;
 send insert t1 select * from t2;
 connection locker;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "insert t1 select * from t2";
+--source include/wait_condition.inc
 drop table t2;
 connection reader;
 --error 1146
@@ -107,7 +117,7 @@ connection locker;
 drop table t1;
 
 
-# End of 4.1 tests
+--echo End of 4.1 tests
 
 #
 # BUG#9998 - MySQL client hangs on USE "database"
@@ -131,15 +141,18 @@ connection locker;
 use mysql;
 LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
 FLUSH TABLES;
---sleep 1
 #
 connection reader;
 use mysql;
 #NOTE:  This must be a multi-table select, otherwise the deadlock will not occur
 send SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
---sleep 1
 #
 connection locker;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = 
+  "SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1";
+--source include/wait_condition.inc
 # Make test case independent from earlier grants.
 --replace_result "Table is already up to date" "OK"
 OPTIMIZE TABLES columns_priv, db, host, user;
@@ -163,10 +176,13 @@ LOCK TABLE t1 WRITE;
 # This waits until t1 is unlocked.
 connection locker;
 send FLUSH TABLES WITH READ LOCK;
---sleep 1
 #
-# This must not block.
 connection writer;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Flushing tables" and info = "FLUSH TABLES WITH READ LOCK";
+--source include/wait_condition.inc
+# This must not block.
 CREATE TABLE t2 (c1 int);
 UNLOCK TABLES;
 #
@@ -187,10 +203,13 @@ LOCK TABLE t1 WRITE;
 # This waits until t1 is unlocked.
 connection locker;
 send FLUSH TABLES WITH READ LOCK;
---sleep 1
 #
 # This must not block.
 connection writer;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Flushing tables" and info = "FLUSH TABLES WITH READ LOCK";
+--source include/wait_condition.inc
 --error 1100
 CREATE TABLE t2 AS SELECT * FROM t1;
 UNLOCK TABLES;
@@ -219,11 +238,15 @@ FLUSH TABLES WITH READ LOCK;
 # wait in wait_if_global_read_lock().
 connection con2;
 send DROP DATABASE mysqltest_1;
---sleep 1
 #
 # With bug in place: try to acquire LOCK_mysql_create_table...
 # When fixed: Reject dropping db because of the read lock.
 connection con1;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Waiting for release of readlock"
+  and info = "DROP DATABASE mysqltest_1";
+--source include/wait_condition.inc
 --error ER_CANT_UPDATE_WITH_READLOCK
 DROP DATABASE mysqltest_1;
 UNLOCK TABLES;
@@ -249,17 +272,18 @@ create table t1 (f1 int(12) unsigned not
 --enable_warnings
 lock tables t1 write;
 connection writer;
---sleep 2
-delimiter //;
-send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
-delimiter ;//
-connection reader;
---sleep 2
-delimiter //;
-send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
-delimiter ;//
-connection locker;
---sleep 2
+send alter table t1 auto_increment=0;
+connection reader;
+let $wait_condition=
+  select count(*) = 1 from information_schema.processlist
+  where state = "Locked" and info = "alter table t1 auto_increment=0";
+--source include/wait_condition.inc
+send alter table t1 auto_increment=0;
+connection locker;
+let $wait_condition=
+  select count(*) = 2 from information_schema.processlist
+  where state = "Locked" and info = "alter table t1 auto_increment=0";
+--source include/wait_condition.inc
 unlock tables;
 connection writer;
 reap;
@@ -267,8 +291,8 @@ connection reader;
 reap;
 connection locker;
 drop table t1;
-
-# End of 5.0 tests
+#
+--echo End of 5.0 tests
 
 
 #
Thread
bk commit into 5.1 tree (kostja:1.2564) BUG#29049konstantin11 Aug