diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-21 16:49:59 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-21 16:49:59 +0300 |
commit | e55e761eae707e47e86af1899335c777e194fdd2 (patch) | |
tree | 87e0bfddd2d07a2a699db9853fdc3fc00e5adde8 | |
parent | abe4c7bfd6d56dc0557d15eaa03185ada4149da7 (diff) | |
download | mariadb-git-e55e761eae707e47e86af1899335c777e194fdd2.tar.gz |
MDEV-31084 assert(waiting) failed in TP_connection_generic::wait_end
buf_flush_wait_flushed(): Correct the logic for registering a wait
around buf_flush_wait() that
commit a091d6ac4e7d2d7873749e685943b3032ccfda57
recently broke. This should be easily repeatable when using a
non-default startup parameter:
thread-handling=pool-of-threads
-rw-r--r-- | storage/innobase/buf/buf0flu.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 3ef70741da1..75286d9d33b 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -1905,9 +1905,13 @@ ATTRIBUTE_COLD void buf_flush_wait_flushed(lsn_t sync_lsn) } else #endif + { + thd_wait_begin(nullptr, THD_WAIT_DISKIO); + tpool::tpool_wait_begin(); buf_flush_wait(sync_lsn); - - thd_wait_end(nullptr); + tpool::tpool_wait_end(); + thd_wait_end(nullptr); + } } mysql_mutex_unlock(&buf_pool.flush_list_mutex); |