• Marko Mäkelä's avatar
    Bug 12323643 - CLEAN UP THE INNODB THREAD SHUTDOWN AND ASSERTIONS (WL#5136) · 6fe99e2d
    Marko Mäkelä authored
    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 Bains
    6fe99e2d
sync0sync.h 27.2 KB