MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:April 12 2007 12:00pm
Subject:bk commit into 5.0 tree (mats:1.2428) BUG#26551
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of mats. When mats 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-04-12 14:00:45+02:00, mats@romeo.(none) +3 -0
  BUG#26551 (Aborted query for non-transactional table breaks replication):
  Added error code ER_QUERY_INTERRUPTED to the list of special errors
  that prevent the slave from starting to execute a query.

  mysql-test/r/rpl_critical_errors.result.txt@stripped, 2007-04-12 14:00:42+02:00, mats@romeo.(none) +56 -0
    New BitKeeper file ``mysql-test/r/rpl_critical_errors.result.txt''

  mysql-test/r/rpl_critical_errors.result.txt@stripped, 2007-04-12 14:00:42+02:00, mats@romeo.(none) +0 -0

  mysql-test/t/rpl_critical_errors.test@stripped, 2007-04-12 14:00:42+02:00, mats@romeo.(none) +66 -0
    New BitKeeper file ``mysql-test/t/rpl_critical_errors.test''

  mysql-test/t/rpl_critical_errors.test@stripped, 2007-04-12 14:00:42+02:00, mats@romeo.(none) +0 -0

  sql/slave.cc@stripped, 2007-04-12 14:00:41+02:00, mats@romeo.(none) +1 -0
    Added ER_QUERY_INTERRUPTED to special error code that prevents statement
    from being executed on slave.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mats
# Host:	romeo.(none)
# Root:	/home/bk/b26551-mysql-5.0-rpl

--- 1.296/sql/slave.cc	2007-04-12 14:00:52 +02:00
+++ 1.297/sql/slave.cc	2007-04-12 14:00:52 +02:00
@@ -3099,6 +3099,7 @@
   switch (expected_error) {
   case ER_NET_READ_ERROR:
   case ER_NET_ERROR_ON_WRITE:  
+  case ER_QUERY_INTERRUPTED:
   case ER_SERVER_SHUTDOWN:  
   case ER_NEW_ABORTING_CONNECTION:
     return 1;
--- New file ---
+++ mysql-test/r/rpl_critical_errors.result.txt	07/04/12 14:00:42
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
CREATE TABLE t1 (data LONGBLOB) ENGINE=MYISAM;
CREATE TABLE t2 (data LONGBLOB) ENGINE=MYISAM;
INSERT INTO t1 (data) VALUES (repeat('a',1024*1024));
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t2 SELECT * FROM t1;
KILL QUERY 2;
SELECT COUNT(*) FROM t2;
COUNT(*)
0
SHOW SLAVE STATUS;
Slave_IO_State	#
Master_Host	127.0.0.1
Master_User	root
Master_Port	MASTER_PORT
Connect_Retry	1
Master_Log_File	master-bin.000001
Read_Master_Log_Pos	#
Relay_Log_File	#
Relay_Log_Pos	#
Relay_Master_Log_File	master-bin.000001
Slave_IO_Running	Yes
Slave_SQL_Running	No
Replicate_Do_DB	
Replicate_Ignore_DB	
Replicate_Do_Table	
Replicate_Ignore_Table	
Replicate_Wild_Do_Table	
Replicate_Wild_Ignore_Table	
Last_Errno	1317
Last_Error	#
Skip_Counter	0
Exec_Master_Log_Pos	#
Relay_Log_Space	#
Until_Condition	None
Until_Log_File	
Until_Log_Pos	0
Master_SSL_Allowed	No
Master_SSL_CA_File	
Master_SSL_CA_Path	
Master_SSL_Cert	
Master_SSL_Cipher	
Master_SSL_Key	
Seconds_Behind_Master	#

--- New file ---
+++ mysql-test/t/rpl_critical_errors.test	07/04/12 14:00:42
# Test for BUG#26551
#

# This test is unfortunately very fragile and very dependent on the
# load of the computer. The test is therefore disabled normally. It is
# entered here to demonstrate how to check that the bug is actually
# solved.

--echo Turn on parsing to run this test

disable_parsing;

source include/master-slave.inc;

connection master;
CREATE TABLE t1 (data LONGBLOB) ENGINE=MYISAM;
CREATE TABLE t2 (data LONGBLOB) ENGINE=MYISAM;

INSERT INTO t1 (data) VALUES (repeat('a',1024*1024));
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
sync_slave_with_master;

connection master;
send INSERT INTO t2 SELECT * FROM t1;

connection master1;

# This sleep is picked so that the query above has started to insert
# some rows into t2. If it hasn't the slave will not stop below.
sleep 4;

# SHOW PROCESSLIST;

# Code for the 5.1 server to get the thread id of the thread executing
# the query above.
#
#SET @id = 0;
#SELECT id INTO @id
#  FROM information_schema.processlist
# WHERE info LIKE 'INSERT INTO t2%';

# This is the connection that is executing the INSERT INTO t2...
KILL QUERY 2;

connection slave;

# Here the slave will only stop if the query above actually started
# inserting some rows into t2. Otherwise, it will hang forever.
wait_for_slave_to_stop;

# The following should be 0
SELECT COUNT(*) FROM t2;

# ... and there the error code should be 1317 (ER_QUERY_INTERRUPTED)
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 7 # 8 # 9 # 20 # 22 # 23 # 33 #
query_vertical SHOW SLAVE STATUS;

enable_parsing;

Thread
bk commit into 5.0 tree (mats:1.2428) BUG#26551Mats Kindahl12 Apr