MDEV-31813 SET GLOBAL innodb_max_purge_lag_wait hangs if innodb_read_only
innodb_max_purge_lag_wait_update(): Return immediately if we are in high_level_read_only mode. srv_wake_purge_thread_if_not_active(): Relax a debug assertion. If srv_read_only_mode holds, purge_sys.enabled() will not hold and this function will do nothing. trx_t::commit_in_memory(): Remove a redundant condition before invoking srv_wake_purge_thread_if_not_active().
This commit is contained in:
parent
e9f3ca6125
commit
02878f128e
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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<const uint*>(limit);
|
||||
if (trx_sys.rseg_history_len <= l)
|
||||
return;
|
||||
|
@ -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]
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user