mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 18:36:12 +01:00 
			
		
		
		
	 85bcc7d263
			
		
	
	
	85bcc7d263
	
	
	
		
			
			Test failed sporadically when --ps-protocol was enabled: a transaction that was BF aborted on COMMIT would succeed instead of reporting the expected deadlock error. The reason for the failure was that, depending on timing, the transaction was BF aborted while the COMMIT statement was being prepared through a COM_STMT_PREPARE command. In the failing cases, the transaction was BF aborted after COM_STMT_PREPARE had already disabled the diagnostics area of the client. Attempt to override the deadlock error towards the end of dispatch_command() would be skipped, resulting in a successful COMMIT even if the transaction is aborted. This bug affected the following MTR tests: - galera_insert_multi - galera_nopk_unicode Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
		
			
				
	
	
		
			22 lines
		
	
	
	
		
			841 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
	
		
			841 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| connection node_2;
 | |
| connection node_1;
 | |
| connect bf_trx, 127.0.0.1, root, , test, $NODE_MYPORT_1;
 | |
| connect victim_trx, 127.0.0.1, root, , test, $NODE_MYPORT_2;
 | |
| connect node_2_ctrl, 127.0.0.1, root, , test, $NODE_MYPORT_2;
 | |
| CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
 | |
| connection victim_trx;
 | |
| START TRANSACTION;
 | |
| INSERT INTO t1 VALUES (2), (1);
 | |
| connection node_2_ctrl;
 | |
| SET GLOBAL debug_dbug = '+d,sync.wsrep_apply_cb';
 | |
| connection bf_trx;
 | |
| INSERT INTO t1 VALUES (1), (2);
 | |
| connection node_2_ctrl;
 | |
| SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| SET GLOBAL debug_dbug = '';
 | |
| connection victim_trx;
 | |
| SET DEBUG_SYNC = "wsrep_at_dispatch_end_before_result SIGNAL signal.wsrep_apply_cb WAIT_FOR bf_abort";
 | |
| COMMIT;
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| DROP TABLE t1;
 |