Bug #95572 | Rollback of big transaction due to conflict remains in hung state | ||
---|---|---|---|
Submitted: | 30 May 2019 3:01 | Modified: | 4 Sep 2019 21:18 |
Reporter: | Narendra Singh Chauhan | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Group Replication | Severity: | S3 (Non-critical) |
Version: | 8.0.17 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[30 May 2019 3:01]
Narendra Singh Chauhan
[20 Jun 2019 6:20]
Narendra Singh Chauhan
Posted by developer: Verified on 5.7.27. I can see that plugin is able to instruct to rollback the transaction successfully. Run command:- $ ./mtr group_replication.gr_test_big_transaction_rollback_hangs.test \ --big-test --mysqld=--max_allowed_packet=67108864 Do changes in three lines in the testcase s{include{../inc{:- --source include/have_group_replication_plugin.inc --source include/group_replication.inc--source --source include/start_and_bootstrap_group_replication.inc TO: --source ../inc/have_group_replication_plugin.inc --source ../inc/group_replication.inc--source --source ../inc/start_and_bootstrap_group_replication.inc MTR testcase output:- ===================== include/group_replication.inc Warnings: Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. [connection server1] [connection server1] include/start_and_bootstrap_group_replication.inc [connection server2] include/start_group_replication.inc [connection server1] CREATE TABLE tab1 (a INT PRIMARY KEY NOT NULL, b LONGTEXT, c LONGTEXT); INSERT INTO tab1 VALUES (1, 'a', 'a'); set profiling=1; Warnings: Warning 1287 '@@profiling' is deprecated and will be removed in a future release. SET @@SESSION.GTID_NEXT= '88888888-aaaa-aaaa-aaaa-888888888888:10'; BEGIN; INSERT INTO tab1 VALUES (2, repeat('a',60000000), repeat('b',60000000)); [connection server2] SET @@SESSION.GTID_NEXT= '88888888-aaaa-aaaa-aaaa-888888888888:10'; FLUSH RELAY LOGS; SET @@SESSION.GTID_NEXT= 'automatic'; SELECT @@global.gtid_executed; @@global.gtid_executed 88888888-aaaa-aaaa-aaaa-888888888888:1-4:10 [connection server1] ## Expect transaction to rollback. ## But, issue here.. this hangs. COMMIT; ERROR HY000: Plugin instructed the server to rollback the current transaction. << As EXPECTED transaction is rolled-back. SET @@SESSION.GTID_NEXT= 'automatic'; SHOW PROFILES; Query_ID Duration Query 1 0.00081450 SHOW WARNINGS 2 0.00225200 SET @@SESSION.GTID_NEXT= '88888888-aaaa-aaaa-aaaa-888888888888:10' 3 0.00170800 BEGIN 4 9.83360500 INSERT INTO tab1 VALUES (2, repeat('a',60000000), repeat('b',60000000)) 5 28.89524825 COMMIT 6 0.00015275 SET @@SESSION.GTID_NEXT= 'automatic' Warnings: Warning 1287 'SHOW PROFILES' is deprecated and will be removed in a future release. Please use Performance Schema instead SELECT @@global.gtid_executed; @@global.gtid_executed 88888888-aaaa-aaaa-aaaa-888888888888:1-4:10 [100%] group_replication.gr_test_big_transaction_rollback_hangs [ fail ]
[4 Sep 2019 21:18]
Daniel Price
Posted by developer: Fixed as of the upcoming 8.0.19 release, and here's the changelog entry: Rollback of an INSERT operation that inserted a LOB value larger than a buffer pool caused a deadlock.