mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
FIx for BUG#8682 "flush_block_commit test hangs on HPUX":
start_waiting_global_read_lock() should wake up all those who are waiting for protect_against_global_read_lock to go down to 0: those registered in waiting_for_read_lock AND those registered in global_read_lock_blocks_commit. sql/lock.cc: start_waiting_global_read_lock() should wake up all those who are waiting for protect_against_global_read_lock to go down to 0: those registered in waiting_for_read_lock AND those registered in global_read_lock_blocks_commit.
This commit is contained in:
@@ -715,7 +715,7 @@ static void print_lock_error(int error)
|
|||||||
least the first step above)
|
least the first step above)
|
||||||
global_read_lock_blocks_commit
|
global_read_lock_blocks_commit
|
||||||
count of threads which have the global read lock and block
|
count of threads which have the global read lock and block
|
||||||
commits (i.e. have completed the second step above)
|
commits (i.e. are in or have completed the second step above)
|
||||||
waiting_for_read_lock
|
waiting_for_read_lock
|
||||||
count of threads which want to take a global read lock but cannot
|
count of threads which want to take a global read lock but cannot
|
||||||
protect_against_global_read_lock
|
protect_against_global_read_lock
|
||||||
@@ -886,7 +886,8 @@ void start_waiting_global_read_lock(THD *thd)
|
|||||||
if (unlikely(thd->global_read_lock))
|
if (unlikely(thd->global_read_lock))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
(void) pthread_mutex_lock(&LOCK_open);
|
(void) pthread_mutex_lock(&LOCK_open);
|
||||||
tmp= (!--protect_against_global_read_lock && waiting_for_read_lock);
|
tmp= (!--protect_against_global_read_lock &&
|
||||||
|
(waiting_for_read_lock || global_read_lock_blocks_commit));
|
||||||
(void) pthread_mutex_unlock(&LOCK_open);
|
(void) pthread_mutex_unlock(&LOCK_open);
|
||||||
if (tmp)
|
if (tmp)
|
||||||
pthread_cond_broadcast(&COND_refresh);
|
pthread_cond_broadcast(&COND_refresh);
|
||||||
|
Reference in New Issue
Block a user