Bug #89101 | MySQL server hang when gtid_mode=on and innodb_thread_concurrency>0 | ||
---|---|---|---|
Submitted: | 4 Jan 2018 1:52 | Modified: | 18 Jan 2018 13:02 |
Reporter: | Seunguck Lee | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S2 (Serious) |
Version: | 5.7.20 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | GTID, hang, thread_concurrency |
[4 Jan 2018 1:52]
Seunguck Lee
[5 Jan 2018 15:47]
Przemyslaw Malkowski
Easy to reproduce with the following settings: server_id = 111 log_bin = binlog max_connections = 4000 binlog_format = STATEMENT enforce_gtid_consistency = ON gtid_mode = ON innodb_thread_concurrency = 16
[12 Jan 2018 17:57]
MySQL Verification Team
Hi! Four million rows ???? Have you tried to repeat the behaviour with the smaller number of rows. I ask that because this is, most likely, expected behaviour with STATEMENT mode. That mode will be deprecated , anyway .....
[15 Jan 2018 14:50]
Seunguck Lee
Hi... "4-Million rows" is just test data. I mean inserting 4 million rows before run test case. Regards,
[15 Jan 2018 15:50]
Przemyslaw Malkowski
mtr test case
Attachment: suite.opt (application/octet-stream, text), 230 bytes.
[15 Jan 2018 15:51]
Przemyslaw Malkowski
mtr test
Attachment: mtr_test_89101.test (application/octet-stream, text), 740 bytes.
[15 Jan 2018 15:51]
Przemyslaw Malkowski
Hello Sinisa, Please note that this issue is not about server slowness, but about permanent, complete dead lock, where once the condition is entered, you won't be able to do a simple select from table at all. This is an example state, long after actually mysqlslap process is gone: mysql [localhost] {msandbox} (mysqlslap) > select * from information_schema.processlist order by time desc limit 10; +------+----------+-----------+-----------+---------+------+----------+-------------------------------------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +------+----------+-----------+-----------+---------+------+----------+-------------------------------------------------------+ | 5639 | msandbox | localhost | mysqlslap | Query | 5841 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3025 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3299 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3303 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3326 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3364 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3383 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3441 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3957 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | | 3785 | msandbox | localhost | mysqlslap | Query | 5840 | updating | update mysqlslap.mysqlslap set value='A' where id=@id | +------+----------+-----------+-----------+---------+------+----------+-------------------------------------------------------+ 10 rows in set (0.02 sec) Please see the mtr test case, which I hope should allow to reproduce it easily. As the hung condition is entered after a while, sometimes 2 minutes, sometimes 10 minutes, please let the test run for a while and then watch the TIME column for the mysqlslap updates, once it goes >30 seconds, you are likely hitting the issue already.
[18 Jan 2018 13:02]
MySQL Verification Team
Hi! After several attempts , I have managed to verify your test case. So, this bug is verified.