Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-28948 FLUSH BINARY LOGS waits/hangs on mysql_mutex_unlock(&LOCK_…
…index) The hang may be caused by a 1pc branch that was fixed by MDEV-26031 in 10.6 and up. That commit did not look relevant in 10.5 and below so was not pushed to the low branches. To possibly tackle the reported issue the MDEV-26031 is backported now with a test that unlike 10.6 does not expose the former bug in 10.5. It is only needed for checking a refined logics inside MYSQL_BIN_LOG::write_transaction_to_binlog. The latter is made to do away with xid-unlogging (which is suspected to have been at fault) for xid-less transaction.
- Loading branch information
Showing
3 changed files
with
87 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| RESET MASTER; | ||
| CREATE TABLE t (f INT) ENGINE=INNODB; | ||
| CREATE TABLE ta (f INT) ENGINE=Aria; | ||
| BEGIN; | ||
| INSERT INTO t SET f = 1; | ||
| INSERT INTO ta SET f = 1; | ||
| COMMIT; | ||
| include/show_binlog_events.inc | ||
| Log_name Pos Event_type Server_id End_log_pos Info | ||
| master-bin.000001 # Gtid # # BEGIN GTID #-#-# | ||
| master-bin.000001 # Query # # use `test`; INSERT INTO ta SET f = 1 | ||
| master-bin.000001 # Query # # COMMIT | ||
| master-bin.000001 # Gtid # # BEGIN GTID #-#-# | ||
| master-bin.000001 # Query # # use `test`; INSERT INTO t SET f = 1 | ||
| master-bin.000001 # Query # # COMMIT | ||
| # Prove that binlog is resettable. Under the bug condition it was not. | ||
| RESET MASTER; | ||
| SET @@binlog_format = ROW; | ||
| CREATE TABLE ta2 ENGINE = Aria SELECT * from t; | ||
| include/show_binlog_events.inc | ||
| Log_name Pos Event_type Server_id End_log_pos Info | ||
| master-bin.000001 # Gtid # # BEGIN GTID #-#-# | ||
| master-bin.000001 # Query # # use `test`; CREATE TABLE `ta2` ( | ||
| `f` int(11) DEFAULT NULL | ||
| ) ENGINE=Aria PAGE_CHECKSUM=1 | ||
| master-bin.000001 # Annotate_rows # # CREATE TABLE ta2 ENGINE = Aria SELECT * from t | ||
| master-bin.000001 # Table_map # # table_id: # (test.ta2) | ||
| master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F | ||
| master-bin.000001 # Query # # COMMIT | ||
| # Prove that binlog is resettable. Under the bug condition it was not. | ||
| RESET MASTER; | ||
| # Cleanup | ||
| DROP TABLE ta2, ta, t; | ||
| # End of the tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # The test file contains tests specific to one phase commit | ||
| # execution and binlogging. | ||
| # | ||
| # MDEV-26031 unnessary xid logging in one phase commit case | ||
| # | ||
| --source include/have_innodb.inc | ||
| --source include/have_aria.inc | ||
| --source include/have_binlog_format_mixed.inc | ||
|
|
||
| RESET MASTER; | ||
|
|
||
| CREATE TABLE t (f INT) ENGINE=INNODB; | ||
| CREATE TABLE ta (f INT) ENGINE=Aria; | ||
|
|
||
| --let $binlog_start = query_get_value(SHOW MASTER STATUS, Position, 1) | ||
| BEGIN; | ||
| INSERT INTO t SET f = 1; | ||
| INSERT INTO ta SET f = 1; | ||
| COMMIT; | ||
| --let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1) | ||
| --source include/show_binlog_events.inc | ||
|
|
||
| --echo # Prove that binlog is resettable. Under the bug condition it was not. | ||
| RESET MASTER; | ||
|
|
||
| --let $binlog_start = query_get_value(SHOW MASTER STATUS, Position, 1) | ||
| --let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1) | ||
| SET @@binlog_format = ROW; | ||
| CREATE TABLE ta2 ENGINE = Aria SELECT * from t; | ||
| --source include/show_binlog_events.inc | ||
|
|
||
| --echo # Prove that binlog is resettable. Under the bug condition it was not. | ||
| RESET MASTER; | ||
|
|
||
|
|
||
| --echo # Cleanup | ||
| DROP TABLE ta2, ta, t; | ||
|
|
||
| --echo # End of the tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters