diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-02-18 18:20:50 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-02-18 18:20:50 +0200 |
commit | 93522bc9a987e756ae1872953af1ddc1731ce9b6 (patch) | |
tree | fb5415a37d3e9138e6d11b06282cab2f648d69e3 /storage/innobase | |
parent | 9d7dc1f6d0494d8c408f2c3e51a214e364783346 (diff) | |
download | mariadb-git-93522bc9a987e756ae1872953af1ddc1731ce9b6.tar.gz |
MDEV-24917 Page cleaner wrongly remains idlebb-10.5-MDEV-24917
commit a9933105938d4d809ea33ac3196e681cd581374f (MDEV-24537)
introduced the regression that the page cleaner will keep sleeping
even if there is work to do.
innodb_max_dirty_pages_pct_update(): Always wake up the page cleaner
on any SET GLOBAL innodb_max_dirty_pages_pct= assignment.
buf_flush_page_cleaner(): If innodb_max_dirty_pages_pct is nonzero,
consult only that parameter when determining whether there is work
to do. Else, consult innodb_max_dirty_pages.
Diffstat (limited to 'storage/innobase')
-rw-r--r-- | storage/innobase/buf/buf0flu.cc | 8 | ||||
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 21a01dbd2fe..0acf9334c2c 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -2136,11 +2136,13 @@ unemployed: double(UT_LIST_GET_LEN(buf_pool.LRU) + UT_LIST_GET_LEN(buf_pool.free)); if (lsn_limit); + else if (srv_max_dirty_pages_pct_lwm != 0.0) + { + if (dirty_pct < srv_max_dirty_pages_pct_lwm) + goto unemployed; + } else if (dirty_pct < srv_max_buf_pool_modified_pct) goto unemployed; - else if (srv_max_dirty_pages_pct_lwm == 0.0 || - dirty_pct < srv_max_dirty_pages_pct_lwm) - goto unemployed; const lsn_t oldest_lsn= buf_pool.get_oldest_modified() ->oldest_modification(); diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index d306311365d..d54987889fd 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -17206,10 +17206,10 @@ innodb_max_dirty_pages_pct_update( in_val); srv_max_dirty_pages_pct_lwm = in_val; - pthread_cond_signal(&buf_pool.do_flush_list); } srv_max_buf_pool_modified_pct = in_val; + pthread_cond_signal(&buf_pool.do_flush_list); } /****************************************************************//** |