summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-12-21 14:40:33 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-12-21 18:51:35 +0200
commit39378e1366f78b38c05e45103b9fb9c829cc5f4f (patch)
treefe2b6600af4a49604fad3a125233624ef0d05cb3
parent6529cba2e2eb3afe239b9218bab817f049e6406e (diff)
downloadmariadb-git-39378e1366f78b38c05e45103b9fb9c829cc5f4f.tar.gz
MDEV-24448 srv_start(): Assertion !buf_pool.any_io_pending()
We are seeing !buf_pool.any_io_pending() assertion failures in srv_start() ever since MDEV-21452 in 10.6. But, the problem appears to be older. In 10.5 since MDEV-19514 removed writes from the precursor of buf_page_read_complete(), it seems that the debug assertion failure could have been harmless. recv_sys_t::apply(): At the end of each batch, wait not only for all log records to have been processed, but also for all pending reads to complete, so that the buffer pool will be in an idle state.
-rw-r--r--storage/innobase/log/log0recv.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index fe691a4b256..3f57b1e8e13 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -2698,7 +2698,7 @@ next_page:
buf_pool.free_block(free_block);
/* Wait until all the pages have been processed */
- while (!pages.empty())
+ while (!pages.empty() || buf_pool.n_pend_reads)
{
const bool abort= found_corrupt_log || found_corrupt_fs;