mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 0ddaefcc76
			
		
	
	
	0ddaefcc76
	
	
	
		
			
			Test was using after certification sync point when it was intended to use before certification sync point. This caused sporadic failures. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
		
			
				
	
	
		
			270 lines
		
	
	
	
		
			8.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			270 lines
		
	
	
	
		
			8.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| connection node_2;
 | |
| connection node_1;
 | |
| CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
 | |
| CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1))  ;
 | |
| INSERT INTO p VALUES (1, 0);
 | |
| INSERT INTO p VALUES (2, 0);
 | |
| connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| DELETE FROM p WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| INSERT INTO c VALUES (1, 1);
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| connection node_2;
 | |
| SELECT * FROM p;
 | |
| f1	f2
 | |
| 1	0
 | |
| 2	0
 | |
| SELECT * FROM c;
 | |
| f1	p_id
 | |
| 1	1
 | |
| DROP TABLE c;
 | |
| DROP TABLE p;
 | |
| connection node_1;
 | |
| CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
 | |
| CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER,
 | |
| f2 INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1))  ;
 | |
| INSERT INTO p VALUES (1, 0);
 | |
| INSERT INTO p VALUES (2, 0);
 | |
| INSERT INTO c VALUES (1, 1, 0);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| UPDATE p SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| UPDATE c SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| connection node_2;
 | |
| SELECT * FROM p;
 | |
| f1	f2
 | |
| 1	1
 | |
| 2	0
 | |
| SELECT * FROM c;
 | |
| f1	p_id	f2
 | |
| 1	1	1
 | |
| DROP TABLE c;
 | |
| DROP TABLE p;
 | |
| connection node_1;
 | |
| CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
 | |
| CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1))  ;
 | |
| INSERT INTO p VALUES (1, 0);
 | |
| INSERT INTO p VALUES (2, 0);
 | |
| INSERT INTO c VALUES (1, 1);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| UPDATE p SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| DELETE FROM c WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| connection node_2;
 | |
| SELECT * FROM p;
 | |
| f1	f2
 | |
| 1	1
 | |
| 2	0
 | |
| SELECT * FROM c;
 | |
| f1	p_id
 | |
| DROP TABLE c;
 | |
| DROP TABLE p;
 | |
| CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER UNIQUE KEY) ENGINE=INNODB;
 | |
| CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f2))  ;
 | |
| INSERT INTO p VALUES (1, 0);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| UPDATE p SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| INSERT INTO c VALUES (1, 0);;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| connection node_2;
 | |
| SELECT * FROM p;
 | |
| f1	f2
 | |
| 1	0
 | |
| SELECT * FROM c;
 | |
| f1	p_id
 | |
| 1	0
 | |
| DROP TABLE c;
 | |
| DROP TABLE p;
 | |
| CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
 | |
| CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER, f2 INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1)
 | |
| ON DELETE CASCADE)  ;
 | |
| INSERT INTO p VALUES (1, 0);
 | |
| INSERT INTO p VALUES (2, 0);
 | |
| INSERT INTO c VALUES (1, 1, 0);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| DELETE FROM p WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| UPDATE c SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| connection node_2;
 | |
| SELECT * FROM p;
 | |
| f1	f2
 | |
| 1	0
 | |
| 2	0
 | |
| SELECT * FROM c;
 | |
| f1	p_id	f2
 | |
| 1	1	1
 | |
| DROP TABLE c;
 | |
| DROP TABLE p;
 | |
| #
 | |
| # Start of 10.4 tests
 | |
| #
 | |
| connection node_1;
 | |
| CREATE TABLE pf (f1 INTEGER PRIMARY KEY) ENGINE=INNODB;
 | |
| CREATE TABLE cf (
 | |
| f1 INTEGER PRIMARY KEY,
 | |
| p_id INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pf (f1)
 | |
| );
 | |
| INSERT INTO pf VALUES (1);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| INSERT INTO cf (f1, p_id) VALUES (10, 1);
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| INSERT INTO cf (f1, p_id) VALUES (20, 1);
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| connection node_2;
 | |
| SELECT * FROM pf;
 | |
| f1
 | |
| 1
 | |
| SELECT * FROM cf;
 | |
| f1	p_id
 | |
| 10	1
 | |
| 20	1
 | |
| DROP TABLE cf;
 | |
| DROP TABLE pf;
 | |
| connection node_1;
 | |
| CREATE TABLE pg (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
 | |
| CREATE TABLE cg (f1 INTEGER PRIMARY KEY, p_id INTEGER,
 | |
| f2 INTEGER,
 | |
| CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pg (f1))  ;
 | |
| INSERT INTO pg VALUES (1, 0);
 | |
| INSERT INTO pg VALUES (2, 0);
 | |
| connection node_1;
 | |
| SET AUTOCOMMIT=ON;
 | |
| START TRANSACTION;
 | |
| UPDATE pg SET f2 = 1 WHERE f1 = 1;
 | |
| connection node_1a;
 | |
| SET SESSION wsrep_sync_wait = 0;
 | |
| SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
 | |
| connection node_2;
 | |
| INSERT INTO cg VALUES (1, 1, 0);
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
 | |
| connection node_1;
 | |
| SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification";
 | |
| COMMIT;
 | |
| connection node_1a;
 | |
| SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached";
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification';
 | |
| SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
 | |
| SET GLOBAL DEBUG_DBUG = "";
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| connection node_1;
 | |
| connection node_2;
 | |
| SELECT * FROM pg;
 | |
| f1	f2
 | |
| 1	1
 | |
| 2	0
 | |
| SELECT * FROM cg;
 | |
| f1	p_id	f2
 | |
| 1	1	0
 | |
| DROP TABLE cg;
 | |
| DROP TABLE pg;
 |