#At file:///home/andrei/MySQL/BZR/2a-23May/WL/mysql-next-mr-wl5569/ based on revid:andrei.elkin@stripped
3311 Andrei Elkin 2011-06-20
wl#5569 MTS
1. mtr.add_suppression for all remained unattended tests that generate
any error at applying by SQL thread or MTS' worker.
An error by worker follows by a warning by coordinator. So it's suppressed.
2. kill of Coordinator is handled immediately without waiting for any ongoing
group scheduling completion. So it can possibly create
consistency issue. That is reported with an error.
3. Two tests are made to expect one of two errors depending on Single- or Multi-Threaded
mode.
@ mysql-test/extra/rpl_tests/rpl_conflicts.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/extra/rpl_tests/rpl_loaddata.test
MTS reports an error that STS does not expect as bug#56287 notes.
@ mysql-test/extra/rpl_tests/rpl_parallel_load.test
cleanup.
@ mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test
MTS reports an error that STS does not expect as bug#56287 notes.
@ mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/r/rpl_loaddata.result
results updated.
@ mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_parallel.test
cleanup.
@ mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt
making post-execution check for warning not to fail.
@ mysql-test/suite/rpl/t/rpl_parallel_start_stop.test
kill of Coordinator is handled immediately to possibly create
consistency issue. That is reported with an error.
@ mysql-test/suite/rpl/t/rpl_row_img_sanity.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_show_errors.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_slave_start.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ mysql-test/suite/rpl/t/rpl_stm_000001.test
An error by worker follows by a warning by coordinator. So it's suppressed.
@ sql/rpl_reporting.h
a new method to help in finding out whether an error has been already
reported.
@ sql/rpl_slave.cc
Refining conditions for Coordinator to report a warning or an error
in cases a. it's killed b. worker errored out and reported it.
In the case a. the error level message is issue and in the case b. the warning level one.
modified:
mysql-test/extra/rpl_tests/rpl_conflicts.test
mysql-test/extra/rpl_tests/rpl_loaddata.test
mysql-test/extra/rpl_tests/rpl_parallel_load.test
mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test
mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test
mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
mysql-test/suite/rpl/r/rpl_loaddata.result
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
mysql-test/suite/rpl/r/rpl_parallel.result
mysql-test/suite/rpl/r/rpl_parallel_start_stop.result
mysql-test/suite/rpl/r/rpl_row_conflicts.result
mysql-test/suite/rpl/r/rpl_row_img_eng_full.result
mysql-test/suite/rpl/r/rpl_row_img_sanity.result
mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result
mysql-test/suite/rpl/r/rpl_sequential.result
mysql-test/suite/rpl/r/rpl_show_errors.result
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
mysql-test/suite/rpl/r/rpl_slave_start.result
mysql-test/suite/rpl/r/rpl_stm_000001.result
mysql-test/suite/rpl/r/rpl_stm_EE_err2.result
mysql-test/suite/rpl/r/rpl_stm_conflicts.result
mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
mysql-test/suite/rpl/t/rpl_parallel.test
mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt
mysql-test/suite/rpl/t/rpl_parallel_multi_db-slave.opt
mysql-test/suite/rpl/t/rpl_parallel_start_stop.test
mysql-test/suite/rpl/t/rpl_row_img_sanity.test
mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test
mysql-test/suite/rpl/t/rpl_show_errors.test
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
mysql-test/suite/rpl/t/rpl_slave_start.test
mysql-test/suite/rpl/t/rpl_stm_000001.test
sql/rpl_reporting.h
sql/rpl_slave.cc
=== modified file 'mysql-test/extra/rpl_tests/rpl_conflicts.test'
--- a/mysql-test/extra/rpl_tests/rpl_conflicts.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_conflicts.test 2011-06-20 13:26:35 +0000
@@ -98,6 +98,7 @@ if (`SELECT @@global.binlog_format != 'R
--eval SELECT "$err" as 'Last_SQL_Error (expected "duplicate key" error)'
--enable_query_log
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
+ call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SELECT * FROM t1;
=== modified file 'mysql-test/extra/rpl_tests/rpl_loaddata.test'
--- a/mysql-test/extra/rpl_tests/rpl_loaddata.test 2011-06-17 18:01:58 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test 2011-06-20 13:26:35 +0000
@@ -158,10 +158,11 @@ if (`SELECT @@global.binlog_format != 'R
{
# Query causes error on master but not on slave. This causes the slave to
# stop with error code 0 (which is wrong: see BUG#57287)
- --let $slave_sql_errno= 0
+ --let $slave_sql_errno= 0,1740
--source include/wait_for_slave_sql_error.inc
drop table t1, t2;
}
+
connection master;
drop table t1, t2;
=== modified file 'mysql-test/extra/rpl_tests/rpl_parallel_load.test'
--- a/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2011-06-15 17:12:11 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2011-06-20 13:26:35 +0000
@@ -252,15 +252,24 @@ let $wait_timeout= 600;
let $wait_condition= SELECT count(*)+sleep(1) = 5 FROM test0.benchmark;
source include/wait_condition.inc;
+# cleanup for files that could not be removed in the end of previous invocation.
+let $MYSQLD_DATADIR= `select @@datadir`;
+--remove_files_wildcard $MYSQLD_DATADIR *.out
+
use test;
-select * from test0.benchmark into outfile 'benchmark.out';
+let $benchmark_file= `select replace(concat("benchmark_",uuid(),".out"),"-","_")`;
+--replace_regex /benchmark_.*.out/benchmark.out/
+eval select * from test0.benchmark into outfile '$benchmark_file';
select ts from test0.benchmark where state like 'master started load' into @m_0;
select ts from test0.benchmark where state like 'master ends load' into @m_1;
select ts from test0.benchmark where state like 'slave takes on load' into @s_0;
select ts from test0.benchmark where state like 'slave ends load' into @s_1;
-select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta_m',
- time_to_sec(@s_1) - time_to_sec(@s_0) as 'delta_s' into outfile 'delta.out';
+let $delta_file= `select replace(concat("delta_",uuid(),".out"),"-","_")`;
+--replace_regex /delta_.*.out/delta.out/
+eval select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta_m',
+ time_to_sec(@s_1) - time_to_sec(@s_0) as 'delta_s',
+ time_to_sec(@s_m1) - time_to_sec(@s_m0) as 'delta_sm' into outfile '$delta_file';
let $i = $databases + 1;
while($i)
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test 2011-06-20 13:26:35 +0000
@@ -206,6 +206,8 @@ if ($lower_engine == ndb)
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
SET SQL_LOG_BIN=1;
# NOTE: Because of BUG#52473, when using NDB this will make the test
=== modified file 'mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test'
--- a/mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test 2011-06-20 13:26:35 +0000
@@ -25,9 +25,13 @@ drop table t1;
connection slave;
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.* error code=1062.*Error on slave:.* Error_code: 0");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--echo (expect different error codes on master and slave)
---let $slave_sql_errno= 0
---let $show_slave_sql_error= 1
+--let $slave_sql_errno= 0,1740
+# can't print error text. MTS reports a separate error in this case.
+# Todo: to fix single-threaded-slave BUG#57287.
+--let $show_slave_sql_error= 0
--source include/wait_for_slave_sql_error.inc
drop table t1;
--source include/stop_slave.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result'
--- a/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result 2011-03-16 16:38:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result 2011-06-20 13:26:35 +0000
@@ -6,6 +6,7 @@ CREATE TABLE t1 (a INT NOT NULL AUTO_INC
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=InnoDB;
include/rpl_sync.inc
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
*** Testing schema A->B->C->D->A ***
=== modified file 'mysql-test/suite/rpl/r/rpl_heartbeat_basic.result'
--- a/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result 2011-03-17 13:20:36 +0000
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result 2011-06-20 13:26:35 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression("Slave I/O: The slave I/O thread stops because a fatal error is encountered when it tried to SET @master_binlog_checksum");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
*** Preparing ***
include/stop_slave.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_loaddata.result'
--- a/mysql-test/suite/rpl/r/rpl_loaddata.result 2011-06-17 18:01:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_loaddata.result 2011-06-20 13:26:35 +0000
@@ -73,7 +73,7 @@ load data infile '../../std_data/rpl_loa
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
'\n##\n' starting by '>' ignore 1 lines;
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
-include/wait_for_slave_sql_error.inc [errno=0]
+include/wait_for_slave_sql_error.inc [errno=0,1740 ]
drop table t1, t2;
drop table t1, t2;
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
=== modified file 'mysql-test/suite/rpl/r/rpl_loaddata_fatal.result'
--- a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result 2011-06-20 13:26:35 +0000
@@ -4,6 +4,7 @@ CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10);
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
call mtr.add_suppression("Slave SQL.*Fatal error: Not enough memory, Error_code: 1593");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
include/wait_for_slave_sql_error_and_skip.inc [errno=1593]
Last_SQL_Error = 'Fatal error: Not enough memory'
DROP TABLE t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_parallel.result'
--- a/mysql-test/suite/rpl/r/rpl_parallel.result 2011-06-15 23:27:20 +0000
+++ b/mysql-test/suite/rpl/r/rpl_parallel.result 2011-06-20 13:26:35 +0000
@@ -10,8 +10,7 @@ select ts from test0.benchmark where sta
select ts from test0.benchmark where state like 'master ends load' into @m_1;
select ts from test0.benchmark where state like 'slave takes on load' into @s_0;
select ts from test0.benchmark where state like 'slave ends load' into @s_1;
-select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta_m',
-time_to_sec(@s_1) - time_to_sec(@s_0) as 'delta_s' into outfile 'delta.out';
+select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta.out';
include/diff_tables.inc [master:test15.v_tm_nk, slave:test15.v_tm_nk]
include/diff_tables.inc [master:test15.v_ti_nk, slave:test15.v_ti_nk]
include/diff_tables.inc [master:test15.v_tm_wk, slave:test15.v_tm_wk]
=== modified file 'mysql-test/suite/rpl/r/rpl_parallel_start_stop.result'
--- a/mysql-test/suite/rpl/r/rpl_parallel_start_stop.result 2011-06-15 17:12:11 +0000
+++ b/mysql-test/suite/rpl/r/rpl_parallel_start_stop.result 2011-06-20 13:26:35 +0000
@@ -2,6 +2,7 @@ include/master-slave.inc
[connection master]
call mtr.add_suppression('Slave SQL: Could not execute Write_rows event on table test.t1');
call mtr.add_suppression('Slave SQL: Could not execute Update_rows event on table test.t1; Deadlock found when trying to get lock');
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
create view worker_proc_list as SELECT id from Information_Schema.processlist
where state like 'Waiting for an event from sql thread%';
create view coord_proc_list as SELECT id from Information_Schema.processlist where state like 'Slave has read all relay log%';
@@ -15,7 +16,7 @@ include/wait_for_slave_sql_to_stop.inc
include/start_slave.inc
select id from coord_proc_list into @c_id;
kill query @c_id;
-include/wait_for_slave_sql_to_stop.inc
+include/wait_for_slave_sql_error.inc [errno=1740]
include/start_slave.inc
CREATE TABLE t1 (a int primary key) engine=innodb;
insert into t1 values (1),(2);
=== modified file 'mysql-test/suite/rpl/r/rpl_row_conflicts.result'
--- a/mysql-test/suite/rpl/r/rpl_row_conflicts.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_conflicts.result 2011-06-20 13:26:35 +0000
@@ -24,6 +24,7 @@ include/wait_for_slave_sql_error.inc [er
Last_SQL_Error (expected "duplicate key" error)
Could not execute Write_rows event on table test.t1; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.000001, end_log_pos END_LOG_POS
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SELECT * FROM t1;
a
1
=== modified file 'mysql-test/suite/rpl/r/rpl_row_img_eng_full.result'
--- a/mysql-test/suite/rpl/r/rpl_row_img_eng_full.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_img_eng_full.result 2011-06-20 13:26:35 +0000
@@ -3642,6 +3642,7 @@ c1 c2
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SET SQL_LOG_BIN=1;
include/wait_for_slave_sql_error_and_skip.inc [errno=1032]
DROP TABLE t1;
@@ -3825,6 +3826,7 @@ c1 c2
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SET SQL_LOG_BIN=1;
include/wait_for_slave_sql_error_and_skip.inc [errno=1032]
DROP TABLE t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_row_img_sanity.result'
--- a/mysql-test/suite/rpl/r/rpl_row_img_sanity.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_img_sanity.result 2011-06-20 13:26:35 +0000
@@ -2,6 +2,7 @@ include/master-slave.inc
[connection master]
call mtr.add_suppression("Slave: Can\'t find record in \'t\' Error_code: 1032");
call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t; Can.t find record in .t.* Error_code: 1032");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SHOW VARIABLES LIKE 'binlog_row_image';
Variable_name Value
binlog_row_image FULL
=== modified file 'mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result'
--- a/mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result 2011-02-23 11:54:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result 2011-06-20 13:26:35 +0000
@@ -11,6 +11,7 @@ INSERT INTO t1 VALUES (1);
==== Verify error on slave ====
[on slave]
call mtr.add_suppression("Slave SQL.*Error executing row event: .Table .test.t1. doesn.t exist., Error_code: 1146");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
include/wait_for_slave_sql_error.inc [errno=1146]
==== Clean up ====
include/stop_slave_io.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_sequential.result'
--- a/mysql-test/suite/rpl/r/rpl_sequential.result 2011-06-15 17:41:33 +0000
+++ b/mysql-test/suite/rpl/r/rpl_sequential.result 2011-06-20 13:26:35 +0000
@@ -14,8 +14,7 @@ select ts from test0.benchmark where sta
select ts from test0.benchmark where state like 'master ends load' into @m_1;
select ts from test0.benchmark where state like 'slave takes on load' into @s_0;
select ts from test0.benchmark where state like 'slave ends load' into @s_1;
-select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta_m',
-time_to_sec(@s_1) - time_to_sec(@s_0) as 'delta_s' into outfile 'delta.out';
+select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta.out';
include/diff_tables.inc [master:test15.v_tm_nk, slave:test15.v_tm_nk]
include/diff_tables.inc [master:test15.v_ti_nk, slave:test15.v_ti_nk]
include/diff_tables.inc [master:test15.v_tm_wk, slave:test15.v_tm_wk]
=== modified file 'mysql-test/suite/rpl/r/rpl_show_errors.result'
--- a/mysql-test/suite/rpl/r/rpl_show_errors.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_show_errors.result 2011-06-20 13:26:35 +0000
@@ -4,6 +4,7 @@ CREATE TABLE t1 (a INT, b blob, PRIMARY
DROP TABLE t1;
DROP TABLE t1;
call mtr.add_suppression("Slave SQL: Error .Unknown table .test.t1.. on query.* Error_code: 1051");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
include/wait_for_slave_sql_error.inc [errno=1051]
include/assert.inc [Last_SQL_Error_Timestamp is not null and matches the expected format]
include/stop_slave.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result 2011-03-15 15:16:34 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result 2011-06-20 13:26:35 +0000
@@ -17,5 +17,6 @@ call mtr.add_suppression("Slave: Can't g
call mtr.add_suppression("Slave SQL: Error .Can.t get stat of.* Error_code: 13");
call mtr.add_suppression("Slave: File.* not found.*");
call mtr.add_suppression("Slave SQL: Error .File.* not found.* Error_code: 29");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SET @@GLOBAL.DEBUG = '';
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_start.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_start.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_start.result 2011-06-20 13:26:35 +0000
@@ -7,6 +7,7 @@ include/master-slave.inc
[on slave]
CALL mtr.add_suppression("Slave: Table 't1' already exists Error_code: 1050");
CALL mtr.add_suppression("Slave SQL: Error .Table .t1. already exists. on query.* Error_code: 1050");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
# The statement makes SQL thread to fail.
CREATE TABLE t1(c1 INT);
[on master]
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_000001.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_000001.result 2011-06-19 13:11:25 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_000001.result 2011-06-20 13:26:35 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
create table t1 (word char(20) not null);
load data infile '../../std_data/words.dat' into table t1;
load data local infile 'MYSQL_TEST_DIR/std_data/words.dat' into table t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_EE_err2.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_EE_err2.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_EE_err2.result 2011-06-20 13:26:35 +0000
@@ -8,9 +8,9 @@ insert into t1 values(1),(2);
ERROR 23000: Duplicate entry '2' for key 'a'
drop table t1;
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.* error code=1062.*Error on slave:.* Error_code: 0");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
(expect different error codes on master and slave)
-include/wait_for_slave_sql_error.inc [errno=0]
-Last_SQL_Error = 'Query caused different errors on master and slave. Error on master: message (format)='Duplicate entry '%-.192s' for key %d' error code=1062 ; Error on slave: actual message='no error', error code=0. Default database: 'test'. Query: 'insert into t1 values(1),(2)''
+include/wait_for_slave_sql_error.inc [errno=0,1740]
drop table t1;
include/stop_slave.inc
RESET SLAVE;
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_conflicts.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_conflicts.result 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_conflicts.result 2011-06-20 13:26:35 +0000
@@ -19,6 +19,7 @@ include/wait_for_slave_sql_error.inc [er
Last_SQL_Error (expected "duplicate key" error)
Error 'Duplicate entry '1' for key 'PRIMARY'' on query. Default database: 'test'. Query: 'INSERT INTO t1 VALUES (1)'
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SELECT * FROM t1;
a
1
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result 2011-06-17 18:01:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result 2011-06-20 13:26:35 +0000
@@ -89,7 +89,7 @@ load data CONCURRENT infile '../../std_d
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
'\n##\n' starting by '>' ignore 1 lines;
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
-include/wait_for_slave_sql_error.inc [errno=0]
+include/wait_for_slave_sql_error.inc [errno=0,1740 ]
drop table t1, t2;
drop table t1, t2;
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
=== modified file 'mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test'
--- a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test 2011-03-17 13:20:36 +0000
+++ b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test 2011-06-20 13:26:35 +0000
@@ -31,6 +31,8 @@ CREATE TABLE t2 (a INT NOT NULL AUTO_INC
--source include/rpl_sync.inc
--connection server_4
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--echo
#
=== modified file 'mysql-test/suite/rpl/t/rpl_heartbeat_basic.test'
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-03-17 13:20:36 +0000
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-06-20 13:26:35 +0000
@@ -18,6 +18,7 @@
--source include/have_binlog_format_mixed.inc
call mtr.add_suppression("Slave I/O: The slave I/O thread stops because a fatal error is encountered when it tried to SET @master_binlog_checksum");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
--echo
=== modified file 'mysql-test/suite/rpl/t/rpl_loaddata_fatal.test'
--- a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test 2011-06-20 13:26:35 +0000
@@ -16,6 +16,8 @@ LOAD DATA INFILE '../../std_data/rpl_loa
connection slave;
call mtr.add_suppression("Slave SQL.*Fatal error: Not enough memory, Error_code: 1593");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
let $slave_sql_errno= 1593;
let $show_slave_sql_error= 1;
source include/wait_for_slave_sql_error_and_skip.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel.test'
--- a/mysql-test/suite/rpl/t/rpl_parallel.test 2011-06-15 17:12:11 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel.test 2011-06-20 13:26:35 +0000
@@ -27,7 +27,6 @@
# In the end there will be mysql-test/delta.{parallel,sequential}.log files.
#
-let $rpl_skip_reset_master_and_slave= 1;
--source include/master-slave.inc
connection master;
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt'
--- a/mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt 2011-02-27 17:35:25 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt 2011-06-20 13:26:35 +0000
@@ -1 +1 @@
---thread_stack=512K
+--thread_stack=512K --log-warnings=0
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel_multi_db-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_parallel_multi_db-slave.opt 2011-05-30 10:05:07 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_multi_db-slave.opt 2011-06-20 13:26:35 +0000
@@ -1,2 +1,2 @@
---thread_stack=512K --slave-transaction-retries=0
+--thread_stack=512K --slave-transaction-retries=0 --log-warnings=0
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel_start_stop.test'
--- a/mysql-test/suite/rpl/t/rpl_parallel_start_stop.test 2011-06-15 17:12:11 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_start_stop.test 2011-06-20 13:26:35 +0000
@@ -15,6 +15,7 @@ connection slave;
call mtr.add_suppression('Slave SQL: Could not execute Write_rows event on table test.t1');
call mtr.add_suppression('Slave SQL: Could not execute Update_rows event on table test.t1; Deadlock found when trying to get lock');
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
create view worker_proc_list as SELECT id from Information_Schema.processlist
where state like 'Waiting for an event from sql thread%';
@@ -66,7 +67,8 @@ let $count= 0;
let $table= worker_proc_list;
source include/wait_until_rows_count.inc;
-source include/wait_for_slave_sql_to_stop.inc;
+let $slave_sql_errno= 1740; # ER_MTS_PARALLEL_INCONSISTENT_DATA
+source include/wait_for_slave_sql_error.inc;
source include/start_slave.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_row_img_sanity.test'
--- a/mysql-test/suite/rpl/t/rpl_row_img_sanity.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sanity.test 2011-06-20 13:26:35 +0000
@@ -25,6 +25,8 @@
-- connection slave
call mtr.add_suppression("Slave: Can\'t find record in \'t\' Error_code: 1032");
call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t; Can.t find record in .t.* Error_code: 1032");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
-- connection master
## assertion: check that default value for binlog-row-image == 'FULL'
=== modified file 'mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test'
--- a/mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test 2011-06-20 13:26:35 +0000
@@ -31,6 +31,8 @@ connection slave;
# slave should have stopped because can't find table t1
# 1146 = ER_NO_SUCH_TABLE
call mtr.add_suppression("Slave SQL.*Error executing row event: .Table .test.t1. doesn.t exist., Error_code: 1146");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--let $slave_sql_errno= 1146
--source include/wait_for_slave_sql_error.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_show_errors.test'
--- a/mysql-test/suite/rpl/t/rpl_show_errors.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/t/rpl_show_errors.test 2011-06-20 13:26:35 +0000
@@ -29,6 +29,8 @@ DROP TABLE t1;
# remove a table that does not exist
let $slave_sql_errno=1051; # ER_BAD_TABLE_ERROR
call mtr.add_suppression("Slave SQL: Error .Unknown table .test.t1.. on query.* Error_code: 1051");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
-- source include/wait_for_slave_sql_error.inc
--let $errts0= query_get_value("SHOW SLAVE STATUS", $field, 1)
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test 2011-03-15 15:16:34 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test 2011-06-20 13:26:35 +0000
@@ -72,6 +72,8 @@ call mtr.add_suppression("Slave: Can't g
call mtr.add_suppression("Slave SQL: Error .Can.t get stat of.* Error_code: 13");
call mtr.add_suppression("Slave: File.* not found.*");
call mtr.add_suppression("Slave SQL: Error .File.* not found.* Error_code: 29");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--let $rpl_only_running_threads= 1
eval SET @@GLOBAL.DEBUG = '$old_debug';
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_start.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_start.test 2011-02-23 20:01:27 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_start.test 2011-06-20 13:26:35 +0000
@@ -10,6 +10,8 @@ connection slave;
CALL mtr.add_suppression("Slave: Table 't1' already exists Error_code: 1050");
CALL mtr.add_suppression("Slave SQL: Error .Table .t1. already exists. on query.* Error_code: 1050");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--echo # The statement makes SQL thread to fail.
CREATE TABLE t1(c1 INT);
=== modified file 'mysql-test/suite/rpl/t/rpl_stm_000001.test'
--- a/mysql-test/suite/rpl/t/rpl_stm_000001.test 2011-06-19 13:11:25 +0000
+++ b/mysql-test/suite/rpl/t/rpl_stm_000001.test 2011-06-20 13:26:35 +0000
@@ -4,6 +4,8 @@
-- source include/master-slave.inc
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
+
--let $engine_type= myisam
# Load some data into t1
=== modified file 'sql/rpl_reporting.h'
--- a/sql/rpl_reporting.h 2011-06-09 15:27:47 +0000
+++ b/sql/rpl_reporting.h 2011-06-20 13:26:35 +0000
@@ -127,6 +127,7 @@ public:
};
Error const& last_error() const { return m_last_error; }
+ bool is_error() const { return last_error().number != 0; }
virtual ~Slave_reporting_capability()= 0;
private:
=== modified file 'sql/rpl_slave.cc'
--- a/sql/rpl_slave.cc 2011-06-19 08:04:19 +0000
+++ b/sql/rpl_slave.cc 2011-06-20 13:26:35 +0000
@@ -1073,7 +1073,7 @@ static bool io_slave_killed(THD* thd, Ma
static bool sql_slave_killed(THD* thd, Relay_log_info* rli)
{
bool ret= FALSE;
- bool is_parallel_group= FALSE;
+ bool is_parallel_warn= FALSE;
DBUG_ENTER("sql_slave_killed");
@@ -1085,8 +1085,11 @@ static bool sql_slave_killed(THD* thd, R
Slave can execute stop being in one of two MTS or Single-Threaded mode.
The modes define different criteria to accept the stop.
In particular that relates to the concept of groupping.
+ Killed Coordinator thread expects the worst so it warns on
+ possible consistency issue.
*/
- if ((is_parallel_group= rli->is_mts_in_group())
+ if ((is_parallel_warn= (rli->is_parallel_exec() &&
+ (rli->is_mts_in_group() || thd->killed)))
||
(!rli->is_parallel_exec() &&
thd->transaction.all.cannot_safely_rollback() && rli->is_in_group()))
@@ -1136,7 +1139,7 @@ static bool sql_slave_killed(THD* thd, R
if (!ret)
{
rli->report(WARNING_LEVEL, 0,
- !is_parallel_group ?
+ !is_parallel_warn ?
"Request to stop slave SQL Thread received while "
"applying a group that has non-transactional "
"changes; waiting for completion of the group ... "
@@ -1148,8 +1151,9 @@ static bool sql_slave_killed(THD* thd, R
}
if (ret)
{
- if (is_parallel_group)
- rli->report(WARNING_LEVEL,
+ if (is_parallel_warn)
+ rli->report(!rli->is_error() ? ERROR_LEVEL :
+ WARNING_LEVEL, // an error was reported by Worker
ER_MTS_PARALLEL_INCONSISTENT_DATA,
ER(ER_MTS_PARALLEL_INCONSISTENT_DATA),
msg_stopped_mts);
Attachment: [text/bzr-bundle] bzr/andrei.elkin@oracle.com-20110620132635-otq4ndic0p8b5lmz.bundle
| Thread |
|---|
| • bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3311) WL#5569 | Andrei Elkin | 20 Jun |