In Oracle patch we now call "srv_wake_purge_thread_if_not_active()" from "srv_master_do_active_tasks()" which wakes up purge coordinator and because of the Percona improvement updates activity counter as a side effect. The combination of these two does not let flusher to do its job because activity counter is constantly changing and 'innodb_buffer_pool_pages_dirty' never goes to 0.
The upstream fix for the Bug #30875956
"PURGE ACTIVITY IS TOO MUCH AT CPU% BOUND AND CAUSES IDLE OVERDRIVE"
coming from 5.7.31 and 8.0.21
(https://github.com/mysql/mysql-server/commit/e52529d2adecadf1fde929517bbc7a73da1ed086)
helped to reveal a problem with Percona improvement
"Server activity check fixes for page cleaner thread"
https://blueprints.launchpad.net/percona-server/+spec/xtradb-cleaner-srv-activity-fixes
https://bugs.mysql.com/bug.php?id=70500
(https://github.com/percona/percona-server/commit/05255ba87e77c46cc84b1611af2ab8dc0d32d51f)
In Oracle patch we now call "srv_wake_purge_thread_if_not_active()" from "srv_master_do_active_tasks()" which wakes up purge coordinator and because of the Percona improvement updates activity counter as a side effect. The combination of these two does not let flusher to do its job because activity counter is constantly changing and 'innodb_buffer_pool_pages_dirty' never goes to 0.
This causes https://perconadev.atlassian.net/browse/PS-3411#icft=PS-3411 part of the "innodb.percona_doublewrite" to fail with "Timeout in wait_condition.inc"