Hi Alfranio, Jon,
Patch looks good! I would just like to have Jon to review
the messages (see comments inline).
Jon, would you mind having a look at the wording for the
warning messages below (last three hunks)?
On 03/16/2011 04:38 PM, Alfranio Correia wrote:
> #At
> file:///home/acorreia/workspace.oracle/repository.mysql/bzrwork/bug-11761074/mysql-5.5/
> based on revid:serge.kozlov@stripped
>
> 3373 Alfranio Correia 2011-03-16
> BUG#11877568 - RPL_SEMI_SYNC FAILS IN PB
>
> Currently, rpl_semi_sync is failing in PB due to the warning message:
>
> "Slave SQL: slave SQL thread is being stopped in the middle of "
> "applying of a group having updated a non-transaction table; "
> "waiting for the group completion ..."
>
> The problem started happening after the fix for BUG#11762407 what was
> automatically suppressing some warning messages.
>
> To fix the current issue, we suppress the aforementioned warning message
> and exploit the opportunity to make the sentence clearer.
>
> modified:
> mysql-test/extra/rpl_tests/rpl_stop_middle_group.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_slow_query_log.result
> mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
> mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result
> mysql-test/suite/rpl/r/rpl_stop_slave.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_semi_sync.test
> mysql-test/suite/rpl/t/rpl_slow_query_log.test
> mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test
> mysql-test/suite/rpl/t/rpl_stop_slave.test
> sql/slave.cc
> === modified file 'mysql-test/extra/rpl_tests/rpl_stop_middle_group.test'
> --- a/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test 2011-02-23 11:54:58
> +0000
> +++ b/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test 2011-03-16 16:38:30
> +0000
> @@ -23,8 +23,8 @@ insert into tm set a=null; # to simulate
> commit;
>
> connection slave;
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> -call mtr.add_suppression("Slave SQL.*The slave SQL is stopped, leaving the current
> group of events unfinished with a non-transaction table changed.");
> +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("Slave SQL.*Slave SQL Thread stopped with incomplete event
> group having non-transactional changes");
>
> # slave will catch the killed status but won't shut down immediately
> # only after the whole group has done (commit)
>
> === 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-02-23 11:54:58
> +0000
> +++ b/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result 2011-03-16 16:38:30
> +0000
> @@ -5,7 +5,7 @@ include/rpl_init.inc [topology=1->2->3->
> CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL,
> PRIMARY KEY(a)) ENGINE=MyISAM;
> 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.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
>
> *** 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-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result 2011-03-16 16:38:30 +0000
> @@ -207,7 +207,7 @@ CREATE TABLE t1 (a INT PRIMARY KEY, b VA
> INSERT INTO t1 VALUES (1, 'on slave', NULL);
> INSERT INTO t1 VALUES (1, 'on master', NULL);
> call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on
> query.* Error_code: 1062");
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> Heartbeat events are received while sql thread stopped (1 means 'yes'): 1
> include/stop_slave.inc
> DROP TABLE t1;
>
> === modified file 'mysql-test/suite/rpl/r/rpl_slow_query_log.result'
> --- a/mysql-test/suite/rpl/r/rpl_slow_query_log.result 2011-02-24 14:48:35 +0000
> +++ b/mysql-test/suite/rpl/r/rpl_slow_query_log.result 2011-03-16 16:38:30 +0000
> @@ -1,7 +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("Slave SQL: slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table; waiting for the group
> completion");
> +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");
> include/stop_slave.inc
> SET @old_log_output= @@log_output;
> SET GLOBAL log_output= 'TABLE';
>
> === modified file 'mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result'
> --- a/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result 2011-02-23 11:54:58
> +0000
> +++ b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result 2011-03-16 16:38:30
> +0000
> @@ -70,6 +70,6 @@ include/start_slave.inc
> # Clean up
> DROP TABLE t1;
> SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
> include/rpl_end.inc
>
> === modified file 'mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result'
> --- a/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result 2011-02-23 11:54:58
> +0000
> +++ b/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result 2011-03-16 16:38:30
> +0000
> @@ -11,8 +11,8 @@ insert into tm set a=null;
> Warnings:
> Note 1592 Unsafe statement written to the binary log using statement format since
> BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional
> table after accessing a transactional table within the same transaction.
> commit;
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> -call mtr.add_suppression("Slave SQL.*The slave SQL is stopped, leaving the current
> group of events unfinished with a non-transaction table changed.");
> +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("Slave SQL.*Slave SQL Thread stopped with incomplete event
> group having non-transactional changes");
> include/wait_for_slave_sql_to_stop.inc
> SELECT "NO" AS Last_SQL_Error, @check as `true`;
> Last_SQL_Error true
> @@ -36,9 +36,9 @@ Warnings:
> Note 1592 Unsafe statement written to the binary log using statement format since
> BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional
> table after accessing a transactional table within the same transaction.
> commit;
> include/wait_for_slave_sql_to_stop.inc
> -SELECT "Fatal error: ... The slave SQL is stopped, leaving the current group of
> events unfinished with a non-transaction table changed. If the group consists solely of
> Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT,
> which ignores duplicate key, key not found, and similar errors (see documentation for
> details)." AS Last_SQL_Error, @check as `true`;
> +SELECT "Fatal error: ... Slave SQL Thread stopped with incomplete event group having
> non-transactional changes. If the group consists solely of row-based events, you can try
> to restart the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key
> not found, and similar errors (see documentation for details)." AS Last_SQL_Error, @check
> as `true`;
> Last_SQL_Error true
> -Fatal error: ... The slave SQL is stopped, leaving the current group of events
> unfinished with a non-transaction table changed. If the group consists solely of Row-based
> events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores
> duplicate key, key not found, and similar errors (see documentation for details). 1
> +Fatal error: ... Slave SQL Thread stopped with incomplete event group having
> non-transactional changes. If the group consists solely of row-based events, you can try
> to restart the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key
> not found, and similar errors (see documentation for details). 1
> select count(*) as one from tm;
> one
> 1
> @@ -53,9 +53,9 @@ set @@global.debug="+d,stop_slave_middle
> set @@global.debug="+d,incomplete_group_in_relay_log";
> update tm as t1, ti as t2 set t1.a=t1.a * 2, t2.a=t2.a * 2;
> include/wait_for_slave_sql_to_stop.inc
> -SELECT "Fatal error: ... The slave SQL is stopped, leaving the current group of
> events unfinished with a non-transaction table changed. If the group consists solely of
> Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT,
> which ignores duplicate key, key not found, and similar errors (see documentation for
> details)." AS Last_SQL_Error, @check as `true`;
> +SELECT "Fatal error: ... Slave SQL Thread stopped with incomplete event group having
> non-transactional changes. If the group consists solely of row-based events, you can try
> to restart the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key
> not found, and similar errors (see documentation for details)." AS Last_SQL_Error, @check
> as `true`;
> Last_SQL_Error true
> -Fatal error: ... The slave SQL is stopped, leaving the current group of events
> unfinished with a non-transaction table changed. If the group consists solely of Row-based
> events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores
> duplicate key, key not found, and similar errors (see documentation for details). 1
> +Fatal error: ... Slave SQL Thread stopped with incomplete event group having
> non-transactional changes. If the group consists solely of row-based events, you can try
> to restart the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key
> not found, and similar errors (see documentation for details). 1
> select max(a) as two from tm;
> two
> 2
>
> === modified file 'mysql-test/suite/rpl/r/rpl_stop_slave.result'
> --- a/mysql-test/suite/rpl/r/rpl_stop_slave.result 2011-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/r/rpl_stop_slave.result 2011-03-16 16:38:30 +0000
> @@ -75,7 +75,7 @@ include/wait_for_slave_sql_to_start.inc
> # Test end
> SET GLOBAL debug= '$debug_save';
> include/restart_slave.inc
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> [connection master]
> DROP TABLE t1, t2;
>
>
> === 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-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test 2011-03-16 16:38:30 +0000
> @@ -30,7 +30,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;
> --source include/rpl_sync.inc
> --connection server_4
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> --echo
>
> #
>
> === modified file 'mysql-test/suite/rpl/t/rpl_heartbeat_basic.test'
> --- a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-03-16 16:38:30 +0000
> @@ -320,7 +320,7 @@ INSERT INTO t1 VALUES (1, 'on slave', NU
> INSERT INTO t1 VALUES (1, 'on master', NULL);
> --connection slave
> call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on
> query.* Error_code: 1062");
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> let $slave_errno= ER_DUP_ENTRY
> --source include/wait_for_slave_sql_error.inc
> let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE
> 'slave_received_heartbeats', Value, 1);
>
> === modified file 'mysql-test/suite/rpl/t/rpl_semi_sync.test'
> --- a/mysql-test/suite/rpl/t/rpl_semi_sync.test 2010-12-19 17:15:12 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_semi_sync.test 2011-03-16 16:38:30 +0000
> @@ -15,6 +15,7 @@ call mtr.add_suppression("Unsafe stateme
> connection slave;
> call mtr.add_suppression("Master server does not support semi-sync");
> call mtr.add_suppression("Semi-sync slave .* reply");
> +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");
> enable_query_log;
> connection master;
>
>
> === modified file 'mysql-test/suite/rpl/t/rpl_slow_query_log.test'
> --- a/mysql-test/suite/rpl/t/rpl_slow_query_log.test 2011-02-24 14:48:35 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_slow_query_log.test 2011-03-16 16:38:30 +0000
> @@ -29,8 +29,7 @@ source include/master-slave.inc;
> source include/have_binlog_format_statement.inc;
>
> CALL mtr.add_suppression("Unsafe statement written to the binary log using
> statement format since BINLOG_FORMAT = STATEMENT");
> -call mtr.add_suppression("Slave SQL: slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table; waiting for the group
> completion");
> -
> +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");
>
> # Prepare slave for different long_query_time we need to stop the slave
> # and restart it as long_query_time variable is dynamic and, after
>
> === modified file 'mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test'
> --- a/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test 2011-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test 2011-03-16 16:38:30 +0000
> @@ -19,7 +19,7 @@ SET @@session.binlog_direct_non_transact
> # clean up
> --connection slave
> SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> --connection master
> SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
>
>
> === modified file 'mysql-test/suite/rpl/t/rpl_stop_slave.test'
> --- a/mysql-test/suite/rpl/t/rpl_stop_slave.test 2011-02-23 11:54:58 +0000
> +++ b/mysql-test/suite/rpl/t/rpl_stop_slave.test 2011-03-16 16:38:30 +0000
> @@ -48,7 +48,7 @@ SET GLOBAL debug= '$debug_save';
> source include/restart_slave_sql.inc;
>
> connection slave;
> -call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle
> of applying of a group having updated a non-transaction table");
> +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");
> connection master;
>
> --source include/rpl_connection_master.inc
>
> === modified file 'sql/slave.cc'
> --- a/sql/slave.cc 2011-01-24 03:52:29 +0000
> +++ b/sql/slave.cc 2011-03-16 16:38:30 +0000
> @@ -903,18 +903,18 @@ static bool sql_slave_killed(THD* thd, R
> && rli->is_in_group())
> {
> char msg_stopped[]=
> - "... The slave SQL is stopped, leaving the current group "
> - "of events unfinished with a non-transaction table changed. "
> - "If the group consists solely of Row-based events, you can try "
> - "restarting the slave with --slave-exec-mode=IDEMPOTENT, which "
> + "... Slave SQL Thread stopped with incomplete event group "
> + "having non-transactional changes. "
Disclaimer: I am no native speaker... That said:
1. Why ditching the "The"?
2. "...thread stopped with incomplete event group having...", isn't it more like:
"...thread was stopped while handling an event group containing..."
> + "If the group consists solely of row-based events, you can try "
> + "to restart the slave with --slave-exec-mode=IDEMPOTENT, which "
> "ignores duplicate key, key not found, and similar errors (see "
> "documentation for details).";
>
> if (rli->abort_slave)
> {
> - DBUG_PRINT("info", ("Slave SQL thread is being stopped in the middle of"
> - " a group having updated a non-trans table, giving"
> - " it some grace period"));
> + DBUG_PRINT("info", ("Request to stop slave SQL Thread received while "
> + "applying a group that has non-transactional "
> + "changes; waiting for completion of the group ... "));
>
> /*
> Slave sql thread shutdown in face of unfinished group modified
> @@ -938,9 +938,9 @@ static bool sql_slave_killed(THD* thd, R
> if (ret == 0)
> {
> rli->report(WARNING_LEVEL, 0,
> - "slave SQL thread is being stopped in the middle "
> - "of applying of a group having updated a non-transaction "
> - "table; waiting for the group completion ... ");
> + "Request to stop slave SQL Thread received while "
> + "applying a group that has non-transactional "
> + "changes; waiting for completion of the group ... ");
Looks ok to me.
Regards,
Luís