| 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.
