Bug #78777 Threads staying in "cleaning up" state forever
| Submitted: | 9 Oct 2015 9:39 | Modified: | 11 Aug 2016 17:25 |
|---|---|---|---|
| Reporter: | Przemyslaw Malkowski | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
| Version: | 5.7.8, 5.6.27, 5.7.10 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[9 Oct 2015 9:39]
Przemyslaw Malkowski
[9 Oct 2015 10:09]
Przemyslaw Malkowski
Interestingly, I cannot reproduce the same issue for versions 5.5.46 or 5.5.44.
[9 Oct 2015 12:39]
MySQL Verification Team
Hello Przemyslaw Malkowski, Thank you for the report and test case. Verified as described. Thanks, Umesh
[9 Oct 2015 12:39]
MySQL Verification Team
// 5.6.27 -- Sess 1 [umshastr@hod03]/export/umesh/server/binaries/mysql-advanced-5.6.27: bin/mysql -uroot -S /tmp/mysql_ushastry.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.27-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select @@version; +---------------------------------------+ | @@version | +---------------------------------------+ | 5.6.27-enterprise-commercial-advanced | +---------------------------------------+ 1 row in set (0.00 sec) mysql> use test Database changed mysql> create table t1(id int not null); Query OK, 0 rows affected (0.00 sec) mysql> select * from test.t1; Empty set (0.00 sec) mysql> -- Sess 2 [umshastr@hod03]/export/umesh/server/binaries/mysql-advanced-5.6.27: bin/mysql -uroot -S /tmp/mysql_ushastry.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.27-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> pager grep -A5 TRANSACTIONS PAGER set to 'grep -A5 TRANSACTIONS' mysql> show engine innodb status\G TRANSACTIONS ------------ Trx id counter 1799 Purge done for trx's n:o < 0 undo n:o < 0 state: running but idle History list length 0 LIST OF TRANSACTIONS FOR EACH SESSION: ---TRANSACTION 0, not started MySQL thread id 2, OS thread handle 0x7fc67987b700, query id 11 localhost root init show engine innodb status ---TRANSACTION 1798, not started MySQL thread id 1, OS thread handle 0x7fc6798bc700, query id 9 localhost root cleaning up 1 row in set (0.00 sec) mysql> nopager PAGER set to stdout mysql> show processlist; +----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 1 | root | localhost | test | Sleep | 55 | | NULL | | 2 | root | localhost | NULL | Query | 0 | init | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 2 rows in set (0.00 sec) mysql> select * from information_schema.innodb_trx\G Empty set (0.00 sec) mysql>
[9 Oct 2015 12:40]
MySQL Verification Team
// 5.7.10
[umshastr@hod03]/export/umesh/server/binaries/mysql-advanced-5.7.10: bin/mysql -uroot -S /tmp/mysql_ushastry.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.10-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select @@version;
+---------------------------------------+
| @@version |
+---------------------------------------+
| 5.7.10-enterprise-commercial-advanced |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> create database db1;
Query OK, 1 row affected (0.01 sec)
mysql> use db1
Database changed
mysql> create table t1(id int not null);
Query OK, 0 rows affected (0.00 sec)
mysql> begin; select id from db1.t1 for update;
Query OK, 0 rows affected (0.00 sec)
Empty set (0.00 sec)
mysql>
-- ses 2
[umshastr@hod03]/export/umesh/server/binaries: cd mysql-advanced-5.7.10
[umshastr@hod03]/export/umesh/server/binaries/mysql-advanced-5.7.10: bin/mysql -uroot -S /tmp/mysql_ushastry.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.10-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> pager grep -A5 TRANSACTIONS
PAGER set to 'grep -A5 TRANSACTIONS'
mysql> show engine innodb status\G
TRANSACTIONS
------------
Trx id counter 1288
Purge done for trx's n:o < 818 undo n:o < 0 state: running but idle
History list length 6
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 421641235860192, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 1287, ACTIVE 24 sec
2 lock struct(s), heap size 1136, 1 row lock(s)
MySQL thread id 2, OS thread handle 140165741328128, query id 12 localhost root cleaning up
1 row in set (0.00 sec)
mysql> nopager
PAGER set to stdout
mysql> select * from information_schema.innodb_trx\G
*************************** 1. row ***************************
trx_id: 1287
trx_state: RUNNING
trx_started: 2015-10-09 14:37:05
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 2
trx_mysql_thread_id: 2
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 1
trx_lock_structs: 2
trx_lock_memory_bytes: 1136
trx_rows_locked: 1
trx_rows_modified: 0
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)
mysql> select * from information_schema.processlist;
+----+------+-----------+------+---------+------+-----------+----------------------------------------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+----+------+-----------+------+---------+------+-----------+----------------------------------------------+
| 3 | root | localhost | NULL | Query | 0 | executing | select * from information_schema.processlist |
| 2 | root | localhost | db1 | Sleep | 52 | | NULL |
+----+------+-----------+------+---------+------+-----------+----------------------------------------------+
2 rows in set (0.00 sec)
mysql>
[12 Jul 2016 14:16]
Johan De Meersman
I've repeatedly seen this as well, on 5.6.17. Killing the offending transactin works, but (single test case for the moment) then seems to break replication - is it possible that the transaction has been binlogged and shipped, yet is undone by the kill?
[11 Aug 2016 17:25]
Daniel Price
Posted by developer: Fixed as of the upcoming 5.7.16, 5.6.34 release, and here's the changelog entry: SHOW ENGINE INNODB STATUS output showed a cleaning up state for an idle thread. Thread state information was not reset after statement execution. Thank you for the bug report.
[28 Sep 2016 12:08]
Daniel Price
Posted by developer: Changelog entry moved to 5.6.35, 5.7.17, 8.0.1 releases.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.059 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.