Bug #32032897 DEADLOCKING WAIT GRAPH ON BUSY SERVER
PROBLEM ------- 1. The customer had presented a stack which had many threads waiting on multiple mutexes like LOCK_Status, srv_innodb_monitor_mutex, ibuf_mutex etc. 2. The root cause was that the AHI latch was held in S (shared) mode by the a thread which was doing a truncate of a large table . 3. There was another thread which was trying to acquire the AHI latch in X (exclusive) mode 4. With our lock implementation any thread requesting a X lock ,blocks rest of the threads requesting S(shared) locks,this caused many threads to wait for this shared lock. 5. The main reason why we hold the latches in truncate is to avoid disabling of AHI during truncate FIX
This commit is contained in:
parent
635b5ce355
commit
72432ec7b3
@ -1,6 +1,6 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 1995, 2021, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2014, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
@ -3137,11 +3137,7 @@ fil_reinit_space_header_for_table(
|
||||
row_mysql_unlock_data_dictionary(trx);
|
||||
|
||||
DEBUG_SYNC_C("buffer_pool_scan");
|
||||
/* Lock the search latch in shared mode to prevent user
|
||||
from disabling AHI during the scan */
|
||||
btr_search_s_lock_all();
|
||||
buf_LRU_flush_or_remove_pages(id, NULL);
|
||||
btr_search_s_unlock_all();
|
||||
|
||||
row_mysql_lock_data_dictionary(trx);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user