mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 567c097359
			
		
	
	
	567c097359
	
	
	
		
			
			Warnings are added to net_server.cc when global_system_variables.log_warnings >= 4. When the above condition holds then: - All communication errors from net_serv.cc is also written to the error log. - In case of a of not being able to read or write a packet, a more detailed error is given. Other things: - Added detection of slaves that has hangup to Ack_receiver::run() - vio_close() is now first marking the socket closed before closing it. The reason for this is to ensure that the connection that gets a read error can check if the reason was that the socket was closed. - Add a new state to vio to be able to detect if vio is acive, shutdown or closed. This is used to detect if socket is closed by another thread. - Testing of the new warnings is done in rpl_get_lock.test - Suppress some of the new warnings in mtr to allow one to run some of the tests with -mysqld=--log-warnings=4. All test in the 'rpl' suite can now be run with this option. - Ensure that global.log_warnings are restored at test end in a way that allows one to use mtr --mysqld=--log-warnings=4. Reviewed-by: <serg@mariadb.org>,<brandon.nesterenko@mariadb.com>
		
			
				
	
	
		
			187 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # This include file is used by more than one test suite
 | |
| # (currently rpl and binlog_encryption).
 | |
| # Please check all dependent tests after modifying it
 | |
| #
 | |
| 
 | |
| # ==== Purpose ====
 | |
| #
 | |
| # Check replication protocol packet size handling
 | |
| #
 | |
| # ==== Related bugs ====
 | |
| # Bug#19402 SQL close to the size of the max_allowed_packet fails on slave
 | |
| # BUG#23755: Replicated event larger that max_allowed_packet infinitely re-transmits
 | |
| # BUG#42914: No LAST_IO_ERROR for max_allowed_packet errors
 | |
| # BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
 | |
| 
 | |
| # max-out size db name 
 | |
| source include/have_binlog_format_row.inc;
 | |
| source include/master-slave.inc;
 | |
| 
 | |
| call mtr.add_suppression("Slave I/O: Got a packet bigger than 'slave_max_allowed_packet' bytes, .*error.* 1153");
 | |
| call mtr.add_suppression("Log entry on master is longer than slave_max_allowed_packet");
 | |
| call mtr.add_suppression("Could not write packet:");
 | |
| call mtr.add_suppression("Got a packet bigger than 'max_allowed_packet' bytes");
 | |
| 
 | |
| let $db= DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
 | |
| disable_warnings;
 | |
| eval drop database if exists $db;
 | |
| enable_warnings;
 | |
| eval create database $db;
 | |
| 
 | |
| connection master;
 | |
| let $old_max_allowed_packet= `SELECT @@global.max_allowed_packet`;
 | |
| let $old_net_buffer_length= `SELECT @@global.net_buffer_length`;
 | |
| let $old_slave_max_allowed_packet= `SELECT @@global.slave_max_allowed_packet`;
 | |
| SET @@global.max_allowed_packet=1024;
 | |
| SET @@global.net_buffer_length=1024;
 | |
| 
 | |
| sync_slave_with_master;
 | |
| # Restart slave for setting to take effect
 | |
| source include/stop_slave.inc;
 | |
| source include/start_slave.inc;
 | |
| 
 | |
| # Reconnect to master for new setting to take effect
 | |
| disconnect master;
 | |
| 
 | |
| # alas, can't use eval here; if db name changed apply the change here
 | |
| connect (master,localhost,root,,DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________);
 | |
| 
 | |
| connection master;
 | |
| select @@net_buffer_length, @@max_allowed_packet;
 | |
| 
 | |
| create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
 | |
| 
 | |
| INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
 | |
| sync_slave_with_master;
 | |
| 
 | |
| eval select count(*) from `$db`.`t1` /* must be 1 */;
 | |
| 
 | |
| SHOW STATUS LIKE 'Slave_running';
 | |
| select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
 | |
| connection master;
 | |
| eval drop database $db;
 | |
| sync_slave_with_master;
 | |
| 
 | |
| #
 | |
| # Bug #23755: Replicated event larger that max_allowed_packet infinitely re-transmits
 | |
| #
 | |
| # Check that a situation when the size of event on the master is greater than 
 | |
| # max_allowed_packet on the slave does not lead to infinite re-transmits.
 | |
| 
 | |
| connection master;
 | |
| 
 | |
| # Change the max packet size on master
 | |
| 
 | |
| SET @@global.max_allowed_packet=4096;
 | |
| SET @@global.net_buffer_length=4096;
 | |
| 
 | |
| # Restart slave for new setting to take effect
 | |
| connection slave;
 | |
| source include/stop_slave.inc;
 | |
| source include/start_slave.inc;
 | |
| 
 | |
| # Reconnect to master for new setting to take effect
 | |
| disconnect master;
 | |
| connect (master, localhost, root);
 | |
| connection master;
 | |
| 
 | |
| CREATE TABLE `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
 | |
| 
 | |
| sync_slave_with_master;
 | |
| 
 | |
| connection master;
 | |
| 
 | |
| INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2048');
 | |
| 
 | |
| 
 | |
| #
 | |
| # Bug#42914: The slave I/O thread must stop after trying to read the above
 | |
| # event, However there is no Last_IO_Error report.
 | |
| #
 | |
| 
 | |
| # The slave I/O thread must stop after trying to read the above event
 | |
| connection slave;
 | |
| # 1153 = ER_NET_PACKET_TOO_LARGE
 | |
| --let $slave_io_errno= 1153
 | |
| --let $show_slave_io_error= 1
 | |
| --source include/wait_for_slave_io_error.inc
 | |
| 
 | |
| # TODO: this is needed because of BUG#55790. Remove once that is fixed.
 | |
| --source include/stop_slave_sql.inc
 | |
| 
 | |
| #
 | |
| # Bug#42914: On the master, if a binary log event is larger than
 | |
| # max_allowed_packet, the error message ER_MASTER_FATAL_ERROR_READING_BINLOG
 | |
| # is sent to a slave when it requests a dump from the master, thus leading the
 | |
| # I/O thread to stop. However, there is no Last_IO_Error reported.
 | |
| #
 | |
| 
 | |
| --let $rpl_only_running_threads= 1
 | |
| --source include/rpl_reset.inc
 | |
| --connection master
 | |
| DROP TABLE t1;
 | |
| --sync_slave_with_master
 | |
| 
 | |
| 
 | |
| connection master;
 | |
| CREATE TABLE t1 (f1 int PRIMARY KEY, f2 LONGTEXT, f3 LONGTEXT) ENGINE=MyISAM;
 | |
| sync_slave_with_master;
 | |
| 
 | |
| connection master;
 | |
| INSERT INTO t1(f1, f2, f3) VALUES(1, REPEAT('a', @@global.max_allowed_packet), REPEAT('b', @@global.max_allowed_packet));
 | |
| 
 | |
| connection slave;
 | |
| # The slave I/O thread must stop after receiving
 | |
| # 1153 = ER_NET_PACKET_TOO_LARGE
 | |
| --let $slave_io_errno= 1153
 | |
| --let $show_slave_io_error= 1
 | |
| --source include/wait_for_slave_io_error.inc
 | |
| 
 | |
| # Remove the bad binlog and clear error status on slave.
 | |
| STOP SLAVE;
 | |
| RESET SLAVE;
 | |
| --connection master
 | |
| RESET MASTER;
 | |
| 
 | |
| 
 | |
| #
 | |
| # BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
 | |
| #
 | |
| # In BUG#55322, @@session.max_allowed_packet increased each time SHOW
 | |
| # BINLOG EVENTS was issued. To verify that this bug is fixed, we
 | |
| # execute SHOW BINLOG EVENTS twice and check that max_allowed_packet
 | |
| # never changes.  We turn off the result log because we don't care
 | |
| # about the contents of the binlog.
 | |
| 
 | |
| --disable_result_log
 | |
| SET @max_allowed_packet_0= @@session.max_allowed_packet;
 | |
| SHOW BINLOG EVENTS;
 | |
| SET @max_allowed_packet_1= @@session.max_allowed_packet;
 | |
| SHOW BINLOG EVENTS;
 | |
| SET @max_allowed_packet_2= @@session.max_allowed_packet;
 | |
| --enable_result_log
 | |
| if (`SELECT NOT(@max_allowed_packet_0 = @max_allowed_packet_1 AND @max_allowed_packet_1 = @max_allowed_packet_2)`)
 | |
| {
 | |
|   --echo ERROR: max_allowed_packet changed after executing SHOW BINLOG EVENTS
 | |
|   --source include/show_rpl_debug_info.inc
 | |
|   SELECT @max_allowed_packet_0, @max_allowed_packet_1, @max_allowed_packet_2;
 | |
|   --die @max_allowed_packet changed after executing SHOW BINLOG EVENTS
 | |
| }
 | |
| 
 | |
| 
 | |
| --echo ==== clean up ====
 | |
| connection master;
 | |
| DROP TABLE t1;
 | |
| eval SET @@global.max_allowed_packet= $old_max_allowed_packet;
 | |
| eval SET @@global.net_buffer_length= $old_net_buffer_length;
 | |
| eval SET @@global.slave_max_allowed_packet= $old_slave_max_allowed_packet;
 | |
| # slave is stopped
 | |
| connection slave;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| # Clear Last_IO_Error
 | |
| RESET SLAVE;
 | |
| 
 | |
| --source include/rpl_end.inc
 | |
| # End of tests
 |