diff --git a/mysql-test/suite/innodb/r/read_only_recovery.result b/mysql-test/suite/innodb/r/read_only_recovery.result index 2db12863246..add0da94cab 100644 --- a/mysql-test/suite/innodb/r/read_only_recovery.result +++ b/mysql-test/suite/innodb/r/read_only_recovery.result @@ -36,6 +36,7 @@ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT * FROM t; a 3 +SET GLOBAL innodb_max_purge_lag_wait=0; # restart SELECT * FROM t; a diff --git a/mysql-test/suite/innodb/t/read_only_recovery.test b/mysql-test/suite/innodb/t/read_only_recovery.test index 30876c2fbcf..47146213090 100644 --- a/mysql-test/suite/innodb/t/read_only_recovery.test +++ b/mysql-test/suite/innodb/t/read_only_recovery.test @@ -38,6 +38,7 @@ UPDATE t SET a=3 WHERE a=1; SELECT * FROM t; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT * FROM t; +SET GLOBAL innodb_max_purge_lag_wait=0; --let $restart_parameters= --source include/restart_mysqld.inc SELECT * FROM t; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index bbade7ff529..9dc602f84e9 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -220,6 +220,8 @@ static uint innodb_max_purge_lag_wait; static void innodb_max_purge_lag_wait_update(THD *thd, st_mysql_sys_var *, void *, const void *limit) { + if (high_level_read_only) + return; const uint l= *static_cast(limit); if (!trx_sys.history_exceeds(l)) return; diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 38ec7377fa4..4bd7df09fdc 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1297,8 +1297,6 @@ static tpool::timer *purge_coordinator_timer; /** Wake up the purge threads if there is work to do. */ void srv_wake_purge_thread_if_not_active() { - ut_ad(!srv_read_only_mode); - if (purge_sys.enabled() && !purge_sys.paused() && (srv_undo_log_truncate || trx_sys.history_exists()) && ++purge_state.m_running == 1)