diff --git a/mysql-test/suite/innodb/r/read_only_recovery.result b/mysql-test/suite/innodb/r/read_only_recovery.result index e83bf66432e..7f9854983ef 100644 --- a/mysql-test/suite/innodb/r/read_only_recovery.result +++ b/mysql-test/suite/innodb/r/read_only_recovery.result @@ -35,6 +35,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 7da012efb74..7cb6335a1bb 100644 --- a/mysql-test/suite/innodb/t/read_only_recovery.test +++ b/mysql-test/suite/innodb/t/read_only_recovery.test @@ -37,6 +37,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 3a8d562f705..1bbc7af2520 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -238,6 +238,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.rseg_history_len <= l) return; diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 47e0fe13053..a83b327faf4 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1902,8 +1902,7 @@ srv_active_wake_master_thread_low() void srv_wake_purge_thread_if_not_active() { - ut_ad(!srv_read_only_mode); - ut_ad(!mutex_own(&srv_sys.mutex)); + ut_ad(srv_read_only_mode || !mutex_own(&srv_sys.mutex)); if (purge_sys.enabled() && !purge_sys.paused() && !srv_sys.n_threads_active[SRV_PURGE] diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index b742d1c3686..00d8506c5e7 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -1477,8 +1477,7 @@ inline void trx_t::commit_in_memory(const mtr_t *mtr) trx_mutex_exit(this); ut_a(error_state == DB_SUCCESS); - if (!srv_read_only_mode) - srv_wake_purge_thread_if_not_active(); + srv_wake_purge_thread_if_not_active(); } /** Commit the transaction in a mini-transaction.