mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
connect  con1,localhost,root,,;
 | 
						|
connect  con2,localhost,root,,;
 | 
						|
connection con1;
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
SET DEBUG_SYNC= 'RESET';
 | 
						|
CREATE TABLE t1 (kill_id INT) engine = InnoDB;
 | 
						|
INSERT INTO t1 VALUES(connection_id());
 | 
						|
connection default;
 | 
						|
# Start transaction.
 | 
						|
BEGIN;
 | 
						|
INSERT INTO t1 VALUES(connection_id());
 | 
						|
# Ensure that COMMIT will pause once it acquires protection
 | 
						|
# against its global read lock.
 | 
						|
SET DEBUG_SYNC='ha_commit_trans_after_acquire_commit_lock SIGNAL acquired WAIT_FOR go';
 | 
						|
# Sending:
 | 
						|
COMMIT;
 | 
						|
connection con1;
 | 
						|
# Wait till COMMIT acquires protection against global read
 | 
						|
# lock and pauses.
 | 
						|
SET DEBUG_SYNC='now WAIT_FOR acquired';
 | 
						|
# Sending:
 | 
						|
FLUSH TABLES WITH READ LOCK;
 | 
						|
connection con2;
 | 
						|
SELECT ((@id := kill_id) - kill_id) FROM t1 LIMIT 1;
 | 
						|
((@id := kill_id) - kill_id)
 | 
						|
0
 | 
						|
# Wait till FLUSH TABLES WITH READ LOCK blocks due
 | 
						|
# to active COMMIT
 | 
						|
# Kill connection 'con1'.
 | 
						|
KILL CONNECTION @id;
 | 
						|
connection con1;
 | 
						|
# Try to reap FLUSH TABLES WITH READ LOCK, 
 | 
						|
# it fail due to killed statement and connection.
 | 
						|
Got one of the listed errors
 | 
						|
connection con2;
 | 
						|
# Resume COMMIT.
 | 
						|
SET DEBUG_SYNC='now SIGNAL go';
 | 
						|
connection default;
 | 
						|
# Reaping COMMIT.
 | 
						|
disconnect con2;
 | 
						|
DROP TABLE t1;
 | 
						|
SET DEBUG_SYNC= 'RESET';
 |