summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-06-02 17:33:03 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-06-02 17:33:03 +0300
commit22f935d6daa70a21a3f640261fcf8c9dfb259250 (patch)
tree5ecedcada8aa3fa0da7f8a7fe46bf647f8aef50b
parent5909e0ec31f089e3677f7177e991dffbfb96a4e7 (diff)
downloadmariadb-git-22f935d6daa70a21a3f640261fcf8c9dfb259250.tar.gz
MDEV-28731 Race condition on log checkpoint
mtr_t::modify(): Set the m_made_dirty flag if needed, so that buf_pool_t::insert_into_flush_list() will be invoked while holding log_sys.flush_order_mutex. This is something that was should have been part of commit b212f1dac284cc9b7a060f1eed2cd4604c326966 (MDEV-22107).
-rw-r--r--storage/innobase/mtr/mtr0mtr.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/storage/innobase/mtr/mtr0mtr.cc b/storage/innobase/mtr/mtr0mtr.cc
index 2feb5a0583f..f13b677742b 100644
--- a/storage/innobase/mtr/mtr0mtr.cc
+++ b/storage/innobase/mtr/mtr0mtr.cc
@@ -1263,4 +1263,6 @@ void mtr_t::modify(const buf_block_t &block)
}
iteration.functor.found->type= static_cast<mtr_memo_type_t>
(iteration.functor.found->type | MTR_MEMO_MODIFY);
+ if (is_block_dirtied(&block))
+ m_made_dirty= true;
}