Browse Source
Bug 12323643 - CLEAN UP THE INNODB THREAD SHUTDOWN AND ASSERTIONS (WL#5136)
Bug 12323643 - CLEAN UP THE INNODB THREAD SHUTDOWN AND ASSERTIONS (WL#5136)
Remove most references to thread id in InnoDB. Three references remain: the current holder of a mutex, and the current x-lock holder of a rw-lock, and some references in UNIV_SYNC_DEBUG checks. This allows MySQL to change the thread associated to a client connection. Tighten the UNIV_SYNC_DEBUG checks, trying to ensure that no InnoDB mutex or x-lock is being held when returning control to MySQL. The only semaphore that may be held is the btr_search_latch in shared mode. sync_thread_levels_empty_except_dict(): A wrapper for sync_thread_levels_empty_gen(TRUE). sync_thread_levels_nonempty_trx(): Check that the current thread is not holding any InnoDB semaphores, except btr_search_latch if trx->has_search_latch. sync_thread_levels_empty(): Unused function; remove. trx_t: Remove mysql_thread_id and mysql_process_no. srv_slot_t: Remove id and handle. row_search_for_mysql(), srv_conc_enter_innodb(), srv_conc_force_enter_innodb(), srv_conc_force_exit_innodb(), srv_conc_exit_innodb(), srv_suspend_mysql_thread: Assert !sync_thread_levels_nonempty_trx(). rb:634 approved by Sunny Bainspull/374/head
11 changed files with 120 additions and 77 deletions
-
2storage/innobase/buf/buf0flu.c
-
2storage/innobase/include/log0log.ic
-
35storage/innobase/include/sync0sync.h
-
5storage/innobase/include/trx0trx.h
-
2storage/innobase/row/row0merge.c
-
14storage/innobase/row/row0mysql.c
-
17storage/innobase/row/row0sel.c
-
39storage/innobase/srv/srv0srv.c
-
67storage/innobase/sync/sync0sync.c
-
4storage/innobase/trx/trx0roll.c
-
10storage/innobase/trx/trx0trx.c
Write
Preview
Loading…
Cancel
Save
Reference in new issue