| Bug #69375 | LOAD DATA INFILE claims to be holding 'System Lock' in processlist | ||
|---|---|---|---|
| Submitted: | 1 Jun 2013 7:30 | Modified: | 5 Jun 2013 10:33 |
| Reporter: | Justin Swanhart | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Logging | Severity: | S3 (Non-critical) |
| Version: | 5.6, 5.5, 5.1 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[1 Jun 2013 7:30]
Justin Swanhart
[1 Jun 2013 9:51]
MySQL Verification Team
I filed this internally a while ago. Bug 16189134 - "SYSTEM LOCK" THREAD STATE IS NONSENSE. The "system lock" is set in mysql_lock_tables but not cleared before returning. And most callers don't clear it immediately!
[12 Feb 2015 20:21]
Eric Bergen
Somewhere between 5.6.12 and 5.6.21 this changed from 'System Lock' to 'checking permissions'
[8 Sep 2015 5:00]
Jesper wisborg Krogh
Posted by developer:
System lock still appears in 5.6.26 and 5.7.9 - the Performance Schema shows the same states:
mysql> SELECT VERSION();
+-------------------------------------------+
| VERSION() |
+-------------------------------------------+
| 5.6.26-enterprise-commercial-advanced-log |
+-------------------------------------------+
1 row in set (0.00 sec)
mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_stages_current';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'stage/%';
Query OK, 108 rows affected (0.00 sec)
Rows matched: 108 Changed: 108 Warnings: 0
mysql> SELECT * FROM performance_schema.threads WHERE THREAD_ID = 39\G
*************************** 1. row ***************************
THREAD_ID: 39
NAME: thread/sql/one_connection
TYPE: FOREGROUND
PROCESSLIST_ID: 2
PROCESSLIST_USER: root
PROCESSLIST_HOST: localhost
PROCESSLIST_DB: employees
PROCESSLIST_COMMAND: Query
PROCESSLIST_TIME: 47
PROCESSLIST_STATE: System lock
PROCESSLIST_INFO: LOAD DATA LOCAL INFILE '/tmp/salaries.txt' INTO TABLE salaries
PARENT_THREAD_ID: NULL
ROLE: NULL
INSTRUMENTED: YES
1 row in set (0.00 sec)
mysql> SELECT * FROM performance_schema.events_stages_current WHERE THREAD_ID = 39\G
*************************** 1. row ***************************
THREAD_ID: 39
EVENT_ID: 52
END_EVENT_ID: NULL
EVENT_NAME: stage/sql/System lock
SOURCE: lock.cc:304
TIMER_START: 1198612097179000
TIMER_END: 1246757084663000
TIMER_WAIT: 48144987484000
NESTING_EVENT_ID: 48
NESTING_EVENT_TYPE: STATEMENT
1 row in set (0.00 sec)
mysql> SELECT EVENT_NAME, sys.format_time(TIMER_WAIT) FROM performance_schema.events_stages_current WHERE THREAD_ID = 39;
+-----------------------+-----------------------------+
| EVENT_NAME | sys.format_time(TIMER_WAIT) |
+-----------------------+-----------------------------+
| stage/sql/System lock | 49.54 s |
+-----------------------+-----------------------------+
1 row in set (0.00 sec)
mysql> SELECT VERSION();
+------------------------------------------+
| VERSION() |
+------------------------------------------+
| 5.7.9-enterprise-commercial-advanced-log |
+------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM performance_schema.threads WHERE THREAD_ID = 28\G
*************************** 1. row ***************************
THREAD_ID: 28
NAME: thread/sql/one_connection
TYPE: FOREGROUND
PROCESSLIST_ID: 2
PROCESSLIST_USER: root
PROCESSLIST_HOST: localhost
PROCESSLIST_DB: employees
PROCESSLIST_COMMAND: Query
PROCESSLIST_TIME: 24
PROCESSLIST_STATE: System lock
PROCESSLIST_INFO: LOAD DATA LOCAL INFILE '/tmp/salaries.txt' INTO TABLE salaries
PARENT_THREAD_ID: 1
ROLE: NULL
INSTRUMENTED: YES
HISTORY: YES
CONNECTION_TYPE: Socket
1 row in set (0.00 sec)
mysql> SELECT * FROM performance_schema.events_stages_current WHERE THREAD_ID = 28\G
*************************** 1. row ***************************
THREAD_ID: 28
EVENT_ID: 28
END_EVENT_ID: NULL
EVENT_NAME: stage/sql/System lock
SOURCE: lock.cc:321
TIMER_START: 157581299430000
TIMER_END: 182860587295000
TIMER_WAIT: 25279287865000
WORK_COMPLETED: NULL
WORK_ESTIMATED: NULL
NESTING_EVENT_ID: 24
NESTING_EVENT_TYPE: STATEMENT
1 row in set (0.00 sec)
mysql> SELECT EVENT_NAME, sys.format_time(TIMER_WAIT) FROM performance_schema.events_stages_current WHERE THREAD_ID = 28;
+-----------------------+-----------------------------+
| EVENT_NAME | sys.format_time(TIMER_WAIT) |
+-----------------------+-----------------------------+
| stage/sql/System lock | 26.14 s |
+-----------------------+-----------------------------+
1 row in set (0.00 sec)
[29 Jan 2016 17:03]
Paul DuBois
Noted in 5.5.49, 5.6.30, 5.7.12, 5.8.0 changelogs. Processlist state information was not updated correctly for LOAD DATA INFILE and could show a state different from executing.
