mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 c7e38076f3
			
		
	
	
	c7e38076f3
	
	
	
		
			
			With combination of --log-bin and Galera the server may crash reporting two characteristic stacks: /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG13mark_xid_doneEmb+0xc7)[0x7f182a8e2cb7] /usr/sbin/mysqld(binlog_background_thread+0x2b5)[0x7f182a8e3275] or /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG21do_checkpoint_requestEm+0x9d)[0x7ff395b2dafd] /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG20checkpoint_and_purgeEm+0x11)[0x7ff395b2db91] /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG16rotate_and_purgeEb+0xc2)[0x7ff395b300b2] The reason of the failure appears to be non-matching decrements for `xid_count_per_binlog::xid_count` which can occur when a transaction is executed having its connection issued `SET @@sql_log_bin=0`. In such case the xid count is not incremented but its decrements still runs to turn `binlog_xid_count_list` into improper state which the following FLUSH BINARY LOGS exposes through the crash. *Note_1*: the regression test reuses an existing galera.sql_log_bin which does not run stably (even in its base form) by mtr with --log-bin. *Note_2*: 10.0-galera branch is free of this issue having missed MDEV-7205 fixes.
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Test to check the behavior of galera cluster with sql_log_bin=ON|OFF & binary
 | |
| # logging is disabled. sql_bin_log should not affect galera replication.
 | |
| #
 | |
| # The following bugfixes are tested:
 | |
| #
 | |
| # MDEV-9510: Segmentation fault in binlog thread.
 | |
| #   A scenario otherwise causing a similar segfault is replayed.
 | |
| #   The test must pass having no crashes.
 | |
| #   The sequence of sql statements is provided by original
 | |
| #   sql_log_bin.test augmented with a FLUSH BINLOG LOGS, below.
 | |
| 
 | |
| --source include/galera_cluster.inc
 | |
| --source include/have_innodb.inc
 | |
| 
 | |
| --echo
 | |
| --echo # On node_1
 | |
| --connection node_1
 | |
| 
 | |
| USE test;
 | |
| CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=INNODB;
 | |
| INSERT INTO t1 VALUES (1);
 | |
| 
 | |
| --echo # Disable binary logging for current session
 | |
| SET SQL_LOG_BIN=OFF;
 | |
| INSERT INTO t1 VALUES (2);
 | |
| 
 | |
| # MDEV-9510: the following binlog rotation due to FLUSH segfaults wo/  the fixes
 | |
| FLUSH BINARY LOGS;
 | |
| 
 | |
| CREATE TABLE t2(c1 INT PRIMARY KEY) ENGINE=INNODB;
 | |
| INSERT INTO t2 VALUES (1);
 | |
| CREATE TABLE test.t3 AS SELECT * from t1;
 | |
| 
 | |
| --echo # Enable binary logging for current session
 | |
| SET SQL_LOG_BIN=ON;
 | |
| INSERT INTO t2 VALUES (2);
 | |
| CREATE TABLE t4 AS SELECT * from t2;
 | |
| SELECT * FROM t1;
 | |
| SELECT * FROM t2;
 | |
| SELECT * FROM t3;
 | |
| SELECT * FROM t4;
 | |
| 
 | |
| --echo
 | |
| --echo # On node_2
 | |
| --connection node_2
 | |
| USE test;
 | |
| SELECT * FROM t1;
 | |
| SELECT * FROM t2;
 | |
| SELECT * FROM t3;
 | |
| SELECT * FROM t4;
 | |
| 
 | |
| # Cleanup
 | |
| DROP TABLE t1, t2, t3, t4;
 | |
| 
 | |
| --source include/galera_end.inc
 | |
| --echo # End of test
 |