Commit 5941f19b authored by unknown's avatar unknown
Browse files

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.
parent 2ae6eb09
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -715,7 +715,7 @@ static void print_lock_error(int error)
    least the first step above)
  global_read_lock_blocks_commit
    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
    count of threads which want to take a global read lock but cannot
  protect_against_global_read_lock
@@ -886,7 +886,8 @@ void start_waiting_global_read_lock(THD *thd)
  if (unlikely(thd->global_read_lock))
    DBUG_VOID_RETURN;
  (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);
  if (tmp)
    pthread_cond_broadcast(&COND_refresh);