summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2023-04-21 16:49:59 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2023-04-21 16:49:59 +0300
commite55e761eae707e47e86af1899335c777e194fdd2 (patch)
tree87e0bfddd2d07a2a699db9853fdc3fc00e5adde8
parentabe4c7bfd6d56dc0557d15eaa03185ada4149da7 (diff)
downloadmariadb-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.cc8
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);