Hi Kristian,

looks good. One minor question below.

On Thu, Jun 19, 2014 at 02:50:44PM +0200, [email protected] wrote:
> At http://bazaar.launchpad.net/~maria-captains/maria/10.0
> 
> ------------------------------------------------------------
> revno: 4259
> revision-id: [email protected]
> parent: [email protected]
> committer: Kristian Nielsen <[email protected]>
> branch nick: work-10.0
> timestamp: Thu 2014-06-19 14:50:43 +0200
> message:
>   MDEV-6120: When slave stops with error, error message should indicate the 
> failing GTID
>   
>   If replication breaks in GTID mode, it is not trivial to determine the GTID 
> of
>   the failing event group. This is a problem, as such GTID is needed eg. to
>   explicitly set @@gtid_slave_pos to skip to after that event group, or to
>   compare errors on different servers, etc.
>   
>   Fix by ensuring that relevant slave errors logged to the error log include 
> the
>   GTID of the event group containing the problem event.
...skip...

> === added file 'mysql-test/suite/rpl/t/rpl_gtid_errorlog.test'
> --- a/mysql-test/suite/rpl/t/rpl_gtid_errorlog.test   1970-01-01 00:00:00 
> +0000
> +++ b/mysql-test/suite/rpl/t/rpl_gtid_errorlog.test   2014-06-19 12:50:43 
> +0000
> @@ -0,0 +1,94 @@
> +--source include/have_debug.inc
> +--source include/master-slave.inc
> +
> +--echo *** Test MDEV-6120, output of current GTID when a replication error 
> is logged to the errorlog ***
> +--connection master
> +CREATE TABLE t1(a INT PRIMARY KEY);
> +--sync_slave_with_master
> +
> +--connection slave
> +--source include/stop_slave.inc
> +CHANGE MASTER TO master_use_gtid=slave_pos;
> +
> +--connection master
> +INSERT INTO t1 VALUES (1);
> +SET gtid_seq_no=100;
> +INSERT INTO t1 VALUES (2);
> +INSERT INTO t1 VALUES (3);
> +INSERT INTO t1 VALUES (4);
> +--save_master_pos
> +
> +--connection slave
> +SET sql_log_bin=0;
> +INSERT INTO t1 VALUES (2);
> +SET sql_log_bin=1;
> +
> +START SLAVE;
> +--let $slave_sql_errno=1062
> +--source include/wait_for_slave_sql_error.inc
> +
> +--source include/stop_slave.inc
> +# Skip the problem event from the master.
> +SET GLOBAL gtid_slave_pos= "0-1-100";
> +--source include/start_slave.inc
> +--sync_with_master
> +
> +SELECT * FROM t1 ORDER BY a;
> +
> +--connection master
> +
> +SET @dbug_save= @@debug_dbug;
> +SET debug_dbug= '+d,incident_database_resync_on_replace';
> +REPLACE INTO t1 VALUES (5);
> +SET debug_dbug= @dbug_save;
> +--save_master_pos
> +
> +--connection slave
> +--let $slave_sql_errno=1590
> +--source include/wait_for_slave_sql_error.inc
> +# ToDo no need to switch off GTID once MDEV-4937 is fixed
> +--source include/stop_slave.inc
> +CHANGE MASTER TO master_use_gtid=no;
> +SET sql_slave_skip_counter=1;
> +--source include/start_slave.inc
> +--sync_with_master
> +--source include/stop_slave.inc
> +CHANGE MASTER TO master_use_gtid=slave_pos;
> +--source include/start_slave.inc
> +
> +SELECT * FROM t1 ORDER BY a;
> +
> +
> +# Check error log for correct messages.
> +let $log_error_= `SELECT @@GLOBAL.log_error`;
> +if(!$log_error_)
> +{
> +    # MySQL Server on windows is started with --console and thus
> +    # does not know the location of its .err log, use default location
> +    let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.2.err;
> +}
> +let LOG_ERROR=$log_error_;
> +
> +perl;
> +  use strict;
> +  use warnings;
> +  my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
> +  open(FILE, "<", "$log_error") or die("Unable to open $log_error: $!\n");
> +  my $found_dup= 0;
> +  my $found_incident= 0;
> +  while (<FILE>) {
> +    $found_dup= 1
> +      if /Slave SQL: Error 'Duplicate entry .* on query\. .*Query: '.*', 
> Gtid 0-1-100, Internal MariaDB error code:/
> +      or /Slave SQL: Could not execute Write_rows.*table test.t1; Duplicate 
> entry.*, Gtid 0-1-100, Internal MariaDB error/
> +      ;
> +    $found_incident= 1
> +      if /Slave SQL: The incident LOST_EVENTS occured on the master\. 
> Message: <none>, Internal MariaDB error code: 1590/;
> +  }
> +  print "Duplicate key found: $found_dup; incident found: $found_incident\n";
> +  close(FILE);
> +EOF
> +
> +--connection master
> +DROP TABLE t1;
> +
> +--source include/rpl_end.inc
Why didn't you like include/search_pattern_in_file.inc? It should perfectly able
to match your patterns.

...skip...

Regards,
Sergey

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to