include/master-slave.inc [connection master] ####################################################################### ####################### PART 1: MASTER TESTS ########################## ####################################################################### connection slave; include/stop_slave.inc connection master; call mtr.add_suppression("Can't generate a unique log-filename"); call mtr.add_suppression("Writing one row to the row-based binary log failed.*"); call mtr.add_suppression("Error writing file .*"); call mtr.add_suppression("Could not use master-bin for logging"); SET @old_debug= @@global.debug_dbug; SELECT repeat('x',8192) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data'; SELECT repeat('x',10) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug_46166-2.data'; RESET MASTER; ###################### TEST #1 FLUSH LOGS; # assert: must show two binlogs show binary logs; Log_name File_size master-bin.000001 # master-bin.000002 # ###################### TEST #2 RESET MASTER; SET @@global.debug_dbug="d,error_unique_log_filename"; FLUSH LOGS; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # assert: must show one binlog show binary logs; Log_name File_size master-bin.000001 # SET @@global.debug_dbug=@old_debug; RESET MASTER; ###################### TEST #3 CREATE TABLE t1 (a INT); CREATE TABLE t2 (a VARCHAR(16384)) Engine=InnoDB; CREATE TABLE t4 (a VARCHAR(16384)); INSERT INTO t1 VALUES (1); RESET MASTER; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2; # assert: must show two binlog show binary logs; Log_name File_size master-bin.000001 # master-bin.000002 # SET @@global.debug_dbug=@old_debug; DELETE FROM t2; RESET MASTER; ###################### TEST #4 SET @@global.debug_dbug="d,error_unique_log_filename"; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # assert: must show one entry SELECT count(*) FROM t2; count(*) 1 SET @@global.debug_dbug=@old_debug; DELETE FROM t2; RESET MASTER; ###################### TEST #5 SET @@global.debug_dbug="d,error_unique_log_filename"; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166-2.data' INTO TABLE t2; # assert: must show one entry SELECT count(*) FROM t2; count(*) 1 SET @@global.debug_dbug=@old_debug; DELETE FROM t2; RESET MASTER; ###################### TEST #6 SET @@global.debug_dbug="d,error_unique_log_filename"; SET AUTOCOMMIT=0; INSERT INTO t2 VALUES ('muse'); LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2; INSERT INTO t2 VALUES ('muse'); COMMIT; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # assert: must show three entries SELECT count(*) FROM t2; count(*) 3 SET AUTOCOMMIT= 1; SET @@global.debug_dbug=@old_debug; DELETE FROM t2; RESET MASTER; ###################### TEST #7 SET @@global.debug_dbug="d,error_unique_log_filename"; SET @@binlog_annotate_row_events= 0; SELECT count(*) FROM t4; count(*) 0 LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t4; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # assert: must show 1 entry SELECT count(*) FROM t4; count(*) 1 ### check that the incident event is written to the current log SET @@global.debug_dbug=@old_debug; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Incident # # #1 (LOST_EVENTS) DELETE FROM t4; RESET MASTER; ###################### TEST #8 SET @@global.debug_dbug="d,error_unique_log_filename"; # must show 0 entries SELECT count(*) FROM t4; count(*) 0 SELECT count(*) FROM t2; count(*) 0 LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t4; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) INSERT INTO t2 VALUES ('aaa'), ('bbb'), ('ccc'); ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # INFO: Count(*) Before Offending DELETEs # assert: must show 1 entry SELECT count(*) FROM t4; count(*) 1 # assert: must show 4 entries SELECT count(*) FROM t2; count(*) 4 DELETE FROM t4; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) DELETE FROM t2; ERROR HY000: Can't generate a unique log-filename master-bin.(1-999) # INFO: Count(*) After Offending DELETEs # assert: must show zero entries SELECT count(*) FROM t4; count(*) 0 SELECT count(*) FROM t2; count(*) 0 SET @@global.debug_dbug=@old_debug; ###################### TEST #9 SET @@global.debug_dbug="d,error_unique_log_filename"; SET SQL_LOG_BIN=0; INSERT INTO t2 VALUES ('aaa'), ('bbb'), ('ccc'), ('ddd'); INSERT INTO t4 VALUES ('eee'), ('fff'), ('ggg'), ('hhh'); # assert: must show four entries SELECT count(*) FROM t2; count(*) 4 SELECT count(*) FROM t4; count(*) 4 DELETE FROM t2; DELETE FROM t4; # assert: must show zero entries SELECT count(*) FROM t2; count(*) 0 SELECT count(*) FROM t4; count(*) 0 SET SQL_LOG_BIN=1; SET @@global.debug_dbug=@old_debug; ###################### TEST #10 call mtr.add_suppression("MYSQL_BIN_LOG::open failed to sync the index file."); call mtr.add_suppression("Could not use .*"); RESET MASTER; SHOW WARNINGS; Level Code Message SET @@global.debug_dbug="d,fault_injection_registering_index"; FLUSH LOGS; ERROR HY000: Can't open file: 'master-bin.000002' (errno: 1 "Operation not permitted") SET @@global.debug_dbug=@old_debug; SHOW BINARY LOGS; ERROR HY000: You are not using binary logging CREATE TABLE t5 (a INT); INSERT INTO t4 VALUES ('bbbbb'); INSERT INTO t2 VALUES ('aaaaa'); DELETE FROM t4; DELETE FROM t2; DROP TABLE t5; flush tables; ###################### TEST #11 include/rpl_restart_server.inc [server_number=1] SET @@global.debug_dbug="d,fault_injection_openning_index"; FLUSH LOGS; ERROR HY000: Can't open file: 'master-bin.index' (errno: 1 "Operation not permitted") SET @@global.debug_dbug=@old_debug; RESET MASTER; ERROR HY000: Binlog closed, cannot RESET MASTER CREATE TABLE t5 (a INT); INSERT INTO t4 VALUES ('bbbbb'); INSERT INTO t2 VALUES ('aaaaa'); DELETE FROM t4; DELETE FROM t2; DROP TABLE t5; flush tables; include/rpl_restart_server.inc [server_number=1] ###################### TEST #12 SET @@global.debug_dbug="d,fault_injection_new_file_rotate_event"; FLUSH LOGS; ERROR HY000: Can't open file: 'master-bin' (errno: 2 "No such file or directory") SET @@global.debug_dbug=@old_debug; RESET MASTER; ERROR HY000: Binlog closed, cannot RESET MASTER CREATE TABLE t5 (a INT); INSERT INTO t4 VALUES ('bbbbb'); INSERT INTO t2 VALUES ('aaaaa'); DELETE FROM t4; DELETE FROM t2; DROP TABLE t5; flush tables; include/rpl_restart_server.inc [server_number=1] DROP TABLE t1, t2, t4; RESET MASTER; connection slave; include/start_slave.inc connection master; ####################################################################### ####################### PART 2: SLAVE TESTS ########################### ####################################################################### include/rpl_reset.inc connection slave; include/stop_slave.inc CHANGE MASTER TO MASTER_USE_GTID=NO; include/start_slave.inc call mtr.add_suppression("Slave I/O: Relay log write failure: could not queue event from master.*"); call mtr.add_suppression("Error writing file .*"); call mtr.add_suppression("Could not use .*"); call mtr.add_suppression("MYSQL_BIN_LOG::open failed to sync the index file."); call mtr.add_suppression("Can't generate a unique log-filename .*"); ###################### TEST #13 SET @saved_debug=@@global.debug_dbug; include/stop_slave.inc SET @@global.debug_dbug="d,error_unique_log_filename"; START SLAVE io_thread; include/wait_for_slave_io_error.inc [errno=1595] Last_IO_Error = 'Relay log write failure: could not queue event from master' SET @@global.debug_dbug=@saved_debug; include/rpl_restart_server.inc [server_number=2] ###################### TEST #14 SET @saved_debug=@@global.debug_dbug; include/stop_slave.inc SET @@global.debug_dbug="d,fault_injection_new_file_rotate_event"; START SLAVE io_thread; include/wait_for_slave_io_error.inc [errno=1595] Last_IO_Error = 'Relay log write failure: could not queue event from master' SET @@global.debug_dbug=@saved_debug; include/rpl_restart_server.inc [server_number=2] ###################### TEST #15 SET @saved_debug=@@global.debug_dbug; include/stop_slave.inc SET @@global.debug_dbug="d,fault_injection_registering_index"; START SLAVE io_thread; include/wait_for_slave_io_error.inc [errno=1595] Last_IO_Error = 'Relay log write failure: could not queue event from master' SET @@global.debug_dbug=@saved_debug; include/rpl_restart_server.inc [server_number=2] ###################### TEST #16 SET @saved_debug=@@global.debug_dbug; include/stop_slave.inc SET @@global.debug_dbug="d,fault_injection_openning_index"; START SLAVE io_thread; include/wait_for_slave_io_error.inc [errno=1595] Last_IO_Error = 'Relay log write failure: could not queue event from master' SET @@global.debug_dbug=@saved_debug; include/rpl_restart_server.inc [server_number=2] include/stop_slave_sql.inc Warnings: Note 1255 Slave already has been stopped RESET SLAVE; Warnings: Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos' RESET MASTER; include/rpl_end.inc