Bug #69270 Needn't execute srv_wake_master_thread while executing drop/truncate table
| Submitted: | 17 May 2013 15:56 | Modified: | 3 Apr 2018 16:17 |
|---|---|---|---|
| Reporter: | zhai weixiang (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
| Version: | 5.6.11 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[17 May 2013 16:04]
zhai weixiang
edit the Synopsis
[22 Jul 2013 3:15]
zhai weixiang
any suggestion? If I was wrong , please close this bug report :-)
[3 Apr 2018 16:17]
MySQL Verification Team
Hi! Thank you very much. 5.6 version will not get any changes in this respect. Hence, closed ....
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.051 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.
Description: srv_wake_master_thread() may not need to be called while executing drop/truncate table. In MySQL5.6.11, the master thread will only sleep and never be suspended (only two exception: innodb_force_recovery>= 2 or the server is being shutdown ): quoted code in srv_master_thread: 2332 loop: 2333 if (srv_force_recovery >= SRV_FORCE_NO_BACKGROUND) { 2334 goto suspend_thread; 2335 } 2336 2337 while (srv_shutdown_state == SRV_SHUTDOWN_NONE) { 2338 2339 srv_master_sleep(); 2340 2341 MONITOR_INC(MONITOR_MASTER_THREAD_SLEEP); 2342 2343 if (srv_check_activity(old_activity_count)) { 2344 old_activity_count = srv_get_activity_count(); 2345 srv_master_do_active_tasks(); 2346 } else { 2347 srv_master_do_idle_tasks(); 2348 } 2349 } While executing DROP/TRUNCATE table , srv_wake_master_thread was always called: backtrace of truncate table: ha_innobase::truncate->row_truncate_table_for_mysql->srv_wake_master_thread backtrace of drop table: ha_innobase::delete_table->row_drop_table_for_mysql->srv_wake_master_thread In function srv_wake_master_thread, srv_release_threads(SRV_MASTER, 1) was called and it will acquire srv_sys->mutex to check if the master thread is suspened and wake up it . I think srv_release_threads(SRV_MASTER, 1) is not need to be called in most situation. How to repeat: just read the related code Suggested fix: I don't know...