mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	 862d1be2e6
			
		
	
	
	862d1be2e6
	
	
	
		
			
			Added DEBUG_SYNC_С("ha_write_row_end") in the WSREP branch,
and added a new status to the list of pending statuses in
the mtr test.
		
	
			
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # MDEV-25718 Assertion `transaction.is_streaming()' failed in
 | |
| #            void wsrep::transaction::adopt()
 | |
| #
 | |
| 
 | |
| --source include/galera_cluster.inc
 | |
| --source include/have_debug_sync.inc
 | |
| 
 | |
| CREATE TABLE t1 (f1 INTEGER PRIMARY KEY);
 | |
| 
 | |
| #
 | |
| # Start a SR transaction and block it after it has replicated
 | |
| # a fragment. Notice the transaction is still in executing state.
 | |
| #
 | |
| --connection node_1
 | |
| SET SESSION wsrep_trx_fragment_size = 1;
 | |
| START TRANSACTION;
 | |
| SET debug_sync = "ha_write_row_end SIGNAL write_row_end WAIT_FOR write_row_continue";
 | |
| --send INSERT INTO t1 VALUES (1);
 | |
| 
 | |
| --connect node_ctrl, 127.0.0.1, root, , test, $NODE_MYPORT_1
 | |
| --connection node_ctrl
 | |
| SET debug_sync = "now WAIT_FOR write_row_end";
 | |
| SET GLOBAL debug_dbug = '+d,wsrep_streaming_rollback';
 | |
| 
 | |
| #
 | |
| # Issue a conflicting DDL, that will block in streaming_rollback
 | |
| # sync point.
 | |
| #
 | |
| --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
 | |
| --connection node_1a
 | |
| --send TRUNCATE TABLE t1;
 | |
| 
 | |
| --connection node_ctrl
 | |
| SET SESSION debug_sync = "now WAIT_FOR wsrep_streaming_rollback_reached";
 | |
| 
 | |
| #
 | |
| # Let the INSERT continue. If bug is present will be able to go through
 | |
| # before_rollback() / streaming_rollback() and clear its streaming context,
 | |
| # which causes the assertion to trigger in BF aborter.
 | |
| #
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET debug_sync = "now SIGNAL write_row_continue";
 | |
| 
 | |
| # Let's give the INSERT some time, to make sure it does rollback
 | |
| --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = "INSERT INTO t1 VALUES (1)" AND (STATE = 'Freeing items' OR STATE = 'Rollback' OR STATE = 'Query end');
 | |
| --let $wait_condition_on_error_output = SELECT INFO, STATE FROM INFORMATION_SCHEMA.PROCESSLIST
 | |
| --source include/wait_condition_with_debug.inc
 | |
| 
 | |
| # Resume the DDL in streaming_rollback
 | |
| SET SESSION debug_sync = "now SIGNAL wsrep_streaming_rollback_continue";
 | |
| 
 | |
| --connection node_1a
 | |
| --reap
 | |
| 
 | |
| --connection node_1
 | |
| --error ER_LOCK_DEADLOCK
 | |
| --reap
 | |
| 
 | |
| # Cleanup
 | |
| --connection node_ctrl
 | |
| SET GLOBAL debug_dbug = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| DROP TABLE t1;
 |