Core was generated by `/test/MD040723-mariadb-10.5.22-linux-x86_64-dbg/bin/mariadbd --no-defaults --in'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
[Current thread is 1 (Thread 0x1503332bd700 (LWP 1968710))]
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x000015035285b859 in __GI_abort () at abort.c:79
#2 0x000015035285b729 in __assert_fail_base (fmt=0x1503529f1588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55d0439638dd "!srv_read_only_mode", file=0x55d0439b7b00 "/test/10.5_dbg/storage/innobase/srv/srv0srv.cc", line=1351, function=<optimized out>) at assert.c:92
#3 0x000015035286cfd6 in __GI___assert_fail (assertion=assertion@entry=0x55d0439638dd "!srv_read_only_mode", file=file@entry=0x55d0439b7b00 "/test/10.5_dbg/storage/innobase/srv/srv0srv.cc", line=line@entry=1351, function=function@entry=0x55d0439b7b78 "void srv_wake_purge_thread_if_not_active()") at assert.c:101
#4 0x000055d043341033 in srv_wake_purge_thread_if_not_active () at /test/10.5_dbg/storage/innobase/srv/srv0srv.cc:1351
#5 0x000055d04312ed31 in innodb_undo_log_truncate_update (thd=<optimized out>, save=<optimized out>) at /test/10.5_dbg/storage/innobase/handler/ha_innodb.cc:19691
#6 0x000055d042b7e485 in sys_var_pluginvar::global_update (this=0x55d0464104e8, thd=0x15031c000d48, var=0x15031c012f38) at /test/10.5_dbg/sql/sql_plugin.cc:3628
#7 0x000055d042a94a9a in sys_var::update (this=0x55d0464104e8, thd=0x15031c000d48, var=0x15031c012f38) at /test/10.5_dbg/sql/set_var.cc:207
#8 0x000055d042a94fe7 in set_var::update (this=<optimized out>, thd=<optimized out>) at /test/10.5_dbg/sql/set_var.cc:859
#9 0x000055d042a96279 in sql_set_variables (thd=thd@entry=0x15031c000d48, var_list=var_list@entry=0x15031c005c88, free=free@entry=true) at /test/10.5_dbg/sql/set_var.cc:746
#10 0x000055d042b753be in mysql_execute_command (thd=thd@entry=0x15031c000d48) at /test/10.5_dbg/sql/sql_parse.cc:5112
#11 0x000055d042b5fe55 in mysql_parse (thd=thd@entry=0x15031c000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1503332bc310, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_parse.cc:8106
#12 0x000055d042b6db08 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x15031c000d48, packet=packet@entry=0x15031c00a9e9 "SET GLOBAL innodb_undo_log_truncate=1", packet_length=packet_length@entry=37, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_class.h:1320
#13 0x000055d042b703c6 in do_command (thd=0x15031c000d48) at /test/10.5_dbg/sql/sql_parse.cc:1375
#14 0x000055d042cab37e in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55d046b98258, put_in_cache=put_in_cache@entry=true) at /test/10.5_dbg/sql/sql_connect.cc:1416
#15 0x000055d042cab84c in handle_one_connection (arg=0x55d046b98258) at /test/10.5_dbg/sql/sql_connect.cc:1318
#16 0x0000150352d6c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#17 0x0000150352958133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Core was generated by `/test/MD270723-mariadb-11.2.0-linux-x86_64-dbg/bin/mariadbd --no-defaults --inn'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
[Current thread is 1 (Thread 0x146b81a2b700 (LWP 598206))]
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x0000146ba0fbf859 in __GI_abort () at abort.c:79
#2 0x0000146ba0fbf729 in __assert_fail_base (fmt=0x146ba1155588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x562a3efbe0ee "!srv_read_only_mode", file=0x562a3f00ce10 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=1127, function=<optimized out>) at assert.c:92
#3 0x0000146ba0fd0fd6 in __GI___assert_fail (assertion=assertion@entry=0x562a3efbe0ee "!srv_read_only_mode", file=file@entry=0x562a3f00ce10 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=line@entry=1127, function=function@entry=0x562a3f00d390 "void srv_wake_purge_thread_if_not_active()") at assert.c:101
#4 0x0000562a3e9b25bd in srv_wake_purge_thread_if_not_active () at /test/11.2_dbg/storage/innobase/srv/srv0srv.cc:1127
#5 0x0000562a3e7bf696 in innodb_undo_log_truncate_update (thd=<optimized out>, save=<optimized out>) at /test/11.2_dbg/storage/innobase/handler/ha_innodb.cc:19340
#6 0x0000562a3e1f690d in sys_var_pluginvar::global_update (this=0x562a42100810, thd=0x146b6c000d48, var=0x146b6c013410) at /test/11.2_dbg/sql/sql_plugin.cc:3635
#7 0x0000562a3e0f7ae0 in sys_var::update (this=0x562a42100810, thd=0x146b6c000d48, var=0x146b6c013410) at /test/11.2_dbg/sql/set_var.cc:207
#8 0x0000562a3e0f8023 in set_var::update (this=<optimized out>, thd=<optimized out>) at /test/11.2_dbg/sql/set_var.cc:864
#9 0x0000562a3e0f924a in sql_set_variables (thd=thd@entry=0x146b6c000d48, var_list=var_list@entry=0x146b6c005fe8, free=free@entry=true) at /test/11.2_dbg/sql/set_var.cc:746
#10 0x0000562a3e1db77a in mysql_execute_command (thd=thd@entry=0x146b6c000d48, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/11.2_dbg/sql/sql_parse.cc:4803
#11 0x0000562a3e1c773b in mysql_parse (thd=thd@entry=0x146b6c000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x146b81a2a2c0) at /test/11.2_dbg/sql/sql_parse.cc:7800
#12 0x0000562a3e1d4c00 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x146b6c000d48, packet=packet@entry=0x146b6c00af49 "SET GLOBAL innodb_undo_log_truncate=1", packet_length=packet_length@entry=37, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_class.h:1374
#13 0x0000562a3e1d70b8 in do_command (thd=0x146b6c000d48, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_parse.cc:1405
#14 0x0000562a3e33c717 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x562a4236a848, put_in_cache=put_in_cache@entry=true) at /test/11.2_dbg/sql/sql_connect.cc:1445
#15 0x0000562a3e33cbe6 in handle_one_connection (arg=0x562a4236a848) at /test/11.2_dbg/sql/sql_connect.cc:1347
#16 0x0000146ba14d0609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#17 0x0000146ba10bc133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
The debug assertion is redundant, because srv_read_only_mode implies !purge_sys.enabled(). That is, the function srv_wake_purge_thread_if_not_active() will do nothing else than evaluate purge_sys.enabled() if it is being invoked while InnoDB is in read-only mode.
Removing the debug assertion will also allow us to remove an unlikely condition from the end of trx_t::commit_in_memory() in 10.4 and 10.5. Starting with MDEV-26193 in 10.6, this function will not call srv_wake_purge_thread_if_not_active() anymore.
I reproduced a hang of 10.4 using this patched test:
The statement would only be interruptible by KILL or SHUTDOWN. The fix is to make innodb_max_purge_lag_wait_update() return immediately if InnoDB is executing in read-only mode.
Marko Mäkelä
added a comment - The debug assertion is redundant, because srv_read_only_mode implies !purge_sys.enabled() . That is, the function srv_wake_purge_thread_if_not_active() will do nothing else than evaluate purge_sys.enabled() if it is being invoked while InnoDB is in read-only mode.
Removing the debug assertion will also allow us to remove an unlikely condition from the end of trx_t::commit_in_memory() in 10.4 and 10.5. Starting with MDEV-26193 in 10.6, this function will not call srv_wake_purge_thread_if_not_active() anymore.
I reproduced a hang of 10.4 using this patched test:
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;
The statement would only be interruptible by KILL or SHUTDOWN . The fix is to make innodb_max_purge_lag_wait_update() return immediately if InnoDB is executing in read-only mode.
Core was generated by `/test/MD090823-mariadb-11.2.0-linux-x86_64-dbg/bin/mariadbd --no-defaults --inn'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
[Current thread is 1 (Thread 0x14dead971700 (LWP 876623))]
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x000014deccf17859 in __GI_abort () at abort.c:79
#2 0x000014deccf17729 in __assert_fail_base (fmt=0x14decd0ad588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55c8da77416e "!srv_read_only_mode", file=0x55c8da7c2f70 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=1127, function=<optimized out>) at assert.c:92
#3 0x000014deccf28fd6 in __GI___assert_fail (assertion=assertion@entry=0x55c8da77416e "!srv_read_only_mode", file=file@entry=0x55c8da7c2f70 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=line@entry=1127, function=function@entry=0x55c8da7c34f0 "void srv_wake_purge_thread_if_not_active()") at assert.c:101
#4 0x000055c8da1667bf in srv_wake_purge_thread_if_not_active () at /test/11.2_dbg/storage/innobase/srv/srv0srv.cc:1127
#5 0x000055c8d9f754af in innodb_max_purge_lag_wait_update (thd=0x14de98000d48, limit=<optimized out>) at /test/11.2_dbg/storage/innobase/handler/ha_innodb.cc:249
#6 0x000055c8d99a990d in sys_var_pluginvar::global_update (this=0x55c8dbf74f90, thd=0x14de98000d48, var=0x14de98013410) at /test/11.2_dbg/sql/sql_plugin.cc:3635
#7 0x000055c8d98aaae0 in sys_var::update (this=0x55c8dbf74f90, thd=0x14de98000d48, var=0x14de98013410) at /test/11.2_dbg/sql/set_var.cc:207
#8 0x000055c8d98ab023 in set_var::update (this=<optimized out>, thd=<optimized out>) at /test/11.2_dbg/sql/set_var.cc:864
#9 0x000055c8d98ac24a in sql_set_variables (thd=thd@entry=0x14de98000d48, var_list=var_list@entry=0x14de98005ff0, free=free@entry=true) at /test/11.2_dbg/sql/set_var.cc:746
#10 0x000055c8d998e77a in mysql_execute_command (thd=thd@entry=0x14de98000d48, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/11.2_dbg/sql/sql_parse.cc:4803
#11 0x000055c8d997a73b in mysql_parse (thd=thd@entry=0x14de98000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14dead9702c0) at /test/11.2_dbg/sql/sql_parse.cc:7800
#12 0x000055c8d9987c00 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14de98000d48, packet=packet@entry=0x14de9800af49 "SET GLOBAL innodb_max_purge_lag_wait=1", packet_length=packet_length@entry=38, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_class.h:1375
#13 0x000055c8d998a0b8 in do_command (thd=0x14de98000d48, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_parse.cc:1405
#14 0x000055c8d9aef709 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55c8dc1a2058, put_in_cache=put_in_cache@entry=true) at /test/11.2_dbg/sql/sql_connect.cc:1445
#15 0x000055c8d9aefbd8 in handle_one_connection (arg=0x55c8dc1a2058) at /test/11.2_dbg/sql/sql_connect.cc:1347
#16 0x000014decd428609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#17 0x000014decd014133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Ramesh Sivaraman
added a comment - Following test case crashes the server with a slightly different stack.
# # mysqld options required for replay: --innodb-read-only=1
SET GLOBAL innodb_max_purge_lag_wait=1;
Leads to
11.2.0 00089ead504c63b99063236f5a870615240b5c00 (Debug)
mariadbd: /test/11.2_dbg/storage/innobase/srv/srv0srv.cc:1127: void srv_wake_purge_thread_if_not_active(): Assertion `!srv_read_only_mode' failed.
11.2.0 00089ead504c63b99063236f5a870615240b5c00 (Debug)
Core was generated by `/test/MD090823-mariadb-11.2.0-linux-x86_64-dbg/bin/mariadbd --no-defaults --inn'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
[Current thread is 1 (Thread 0x14dead971700 (LWP 876623))]
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x000014deccf17859 in __GI_abort () at abort.c:79
#2 0x000014deccf17729 in __assert_fail_base (fmt=0x14decd0ad588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55c8da77416e "!srv_read_only_mode", file=0x55c8da7c2f70 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=1127, function=<optimized out>) at assert.c:92
#3 0x000014deccf28fd6 in __GI___assert_fail (assertion=assertion@entry=0x55c8da77416e "!srv_read_only_mode", file=file@entry=0x55c8da7c2f70 "/test/11.2_dbg/storage/innobase/srv/srv0srv.cc", line=line@entry=1127, function=function@entry=0x55c8da7c34f0 "void srv_wake_purge_thread_if_not_active()") at assert.c:101
#4 0x000055c8da1667bf in srv_wake_purge_thread_if_not_active () at /test/11.2_dbg/storage/innobase/srv/srv0srv.cc:1127
#5 0x000055c8d9f754af in innodb_max_purge_lag_wait_update (thd=0x14de98000d48, limit=<optimized out>) at /test/11.2_dbg/storage/innobase/handler/ha_innodb.cc:249
#6 0x000055c8d99a990d in sys_var_pluginvar::global_update (this=0x55c8dbf74f90, thd=0x14de98000d48, var=0x14de98013410) at /test/11.2_dbg/sql/sql_plugin.cc:3635
#7 0x000055c8d98aaae0 in sys_var::update (this=0x55c8dbf74f90, thd=0x14de98000d48, var=0x14de98013410) at /test/11.2_dbg/sql/set_var.cc:207
#8 0x000055c8d98ab023 in set_var::update (this=<optimized out>, thd=<optimized out>) at /test/11.2_dbg/sql/set_var.cc:864
#9 0x000055c8d98ac24a in sql_set_variables (thd=thd@entry=0x14de98000d48, var_list=var_list@entry=0x14de98005ff0, free=free@entry=true) at /test/11.2_dbg/sql/set_var.cc:746
#10 0x000055c8d998e77a in mysql_execute_command (thd=thd@entry=0x14de98000d48, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/11.2_dbg/sql/sql_parse.cc:4803
#11 0x000055c8d997a73b in mysql_parse (thd=thd@entry=0x14de98000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14dead9702c0) at /test/11.2_dbg/sql/sql_parse.cc:7800
#12 0x000055c8d9987c00 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14de98000d48, packet=packet@entry=0x14de9800af49 "SET GLOBAL innodb_max_purge_lag_wait=1", packet_length=packet_length@entry=38, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_class.h:1375
#13 0x000055c8d998a0b8 in do_command (thd=0x14de98000d48, blocking=blocking@entry=true) at /test/11.2_dbg/sql/sql_parse.cc:1405
#14 0x000055c8d9aef709 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55c8dc1a2058, put_in_cache=put_in_cache@entry=true) at /test/11.2_dbg/sql/sql_connect.cc:1445
#15 0x000055c8d9aefbd8 in handle_one_connection (arg=0x55c8dc1a2058) at /test/11.2_dbg/sql/sql_connect.cc:1347
#16 0x000014decd428609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#17 0x000014decd014133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
People
Marko Mäkelä
Ramesh Sivaraman
Votes:
0Vote for this issue
Watchers:
2Start watching this issue
Dates
Created:
Updated:
Resolved:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":1046.2000002861023,"ttfb":429.30000019073486,"pageVisibility":"visible","entityId":123808,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"ee3cae6e-f491-4305-9999-44b1cc951b36","navigationType":0,"readyForUser":1172.5,"redirectCount":0,"resourceLoadedEnd":1199.0999999046326,"resourceLoadedStart":435.30000019073486,"resourceTiming":[{"duration":133.7999997138977,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":435.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":435.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":569.0999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":133.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":435.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":435.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":569.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":142.89999961853027,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":435.7000002861023,"connectEnd":435.7000002861023,"connectStart":435.7000002861023,"domainLookupEnd":435.7000002861023,"domainLookupStart":435.7000002861023,"fetchStart":435.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":435.7000002861023,"responseEnd":578.5999999046326,"responseStart":578.5999999046326,"secureConnectionStart":435.7000002861023},{"duration":267.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":435.90000009536743,"connectEnd":435.90000009536743,"connectStart":435.90000009536743,"domainLookupEnd":435.90000009536743,"domainLookupStart":435.90000009536743,"fetchStart":435.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":435.90000009536743,"responseEnd":703.8000001907349,"responseStart":703.8000001907349,"secureConnectionStart":435.90000009536743},{"duration":271.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":436.2000002861023,"connectEnd":436.2000002861023,"connectStart":436.2000002861023,"domainLookupEnd":436.2000002861023,"domainLookupStart":436.2000002861023,"fetchStart":436.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":436.2000002861023,"responseEnd":707.7000002861023,"responseStart":707.7000002861023,"secureConnectionStart":436.2000002861023},{"duration":271.7999997138977,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":436.30000019073486,"connectEnd":436.30000019073486,"connectStart":436.30000019073486,"domainLookupEnd":436.30000019073486,"domainLookupStart":436.30000019073486,"fetchStart":436.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":436.30000019073486,"responseEnd":708.0999999046326,"responseStart":708.0999999046326,"secureConnectionStart":436.30000019073486},{"duration":271.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":436.5,"connectEnd":436.5,"connectStart":436.5,"domainLookupEnd":436.5,"domainLookupStart":436.5,"fetchStart":436.5,"redirectEnd":0,"redirectStart":0,"requestStart":436.5,"responseEnd":708.4000000953674,"responseStart":708.4000000953674,"secureConnectionStart":436.5},{"duration":287.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":436.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":436.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":724.2000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":271.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":436.90000009536743,"connectEnd":436.90000009536743,"connectStart":436.90000009536743,"domainLookupEnd":436.90000009536743,"domainLookupStart":436.90000009536743,"fetchStart":436.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":436.90000009536743,"responseEnd":708.8000001907349,"responseStart":708.8000001907349,"secureConnectionStart":436.90000009536743},{"duration":287.30000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":437,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":437,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":724.3000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":272.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":437.2000002861023,"connectEnd":437.2000002861023,"connectStart":437.2000002861023,"domainLookupEnd":437.2000002861023,"domainLookupStart":437.2000002861023,"fetchStart":437.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":437.2000002861023,"responseEnd":709.3000001907349,"responseStart":709.3000001907349,"secureConnectionStart":437.2000002861023},{"duration":326.7999997138977,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":438.2000002861023,"connectEnd":438.2000002861023,"connectStart":438.2000002861023,"domainLookupEnd":438.2000002861023,"domainLookupStart":438.2000002861023,"fetchStart":438.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":438.2000002861023,"responseEnd":765,"responseStart":765,"secureConnectionStart":438.2000002861023},{"duration":356.2000002861023,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":442.59999990463257,"connectEnd":442.59999990463257,"connectStart":442.59999990463257,"domainLookupEnd":442.59999990463257,"domainLookupStart":442.59999990463257,"fetchStart":442.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":442.59999990463257,"responseEnd":798.8000001907349,"responseStart":798.8000001907349,"secureConnectionStart":442.59999990463257},{"duration":40.09999990463257,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":753.3000001907349,"connectEnd":753.3000001907349,"connectStart":753.3000001907349,"domainLookupEnd":753.3000001907349,"domainLookupStart":753.3000001907349,"fetchStart":753.3000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":753.3000001907349,"responseEnd":793.4000000953674,"responseStart":793.4000000953674,"secureConnectionStart":753.3000001907349},{"duration":203.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2cib/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":797.0999999046326,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":797.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1000.5999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":398.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":798,"connectEnd":798,"connectStart":798,"domainLookupEnd":798,"domainLookupStart":798,"fetchStart":798,"redirectEnd":0,"redirectStart":0,"requestStart":798,"responseEnd":1196.3000001907349,"responseStart":1196.3000001907349,"secureConnectionStart":798},{"duration":400,"initiatorType":"script","name":"https://jira.mariadb.org/s/097ae97cb8fbec7d6ea4bbb1f26955b9-CDN/lu2cib/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":798.4000000953674,"connectEnd":798.4000000953674,"connectStart":798.4000000953674,"domainLookupEnd":798.4000000953674,"domainLookupStart":798.4000000953674,"fetchStart":798.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":798.4000000953674,"responseEnd":1198.4000000953674,"responseStart":1198.4000000953674,"secureConnectionStart":798.4000000953674},{"duration":400.2999997138977,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:issue-table-dnd/jira.webresources:issue-table-dnd.js","startTime":798.8000001907349,"connectEnd":798.8000001907349,"connectStart":798.8000001907349,"domainLookupEnd":798.8000001907349,"domainLookupStart":798.8000001907349,"fetchStart":798.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":798.8000001907349,"responseEnd":1199.0999999046326,"responseStart":1199.0999999046326,"secureConnectionStart":798.8000001907349},{"duration":201.59999990463257,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":1039.4000000953674,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1039.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1241,"responseStart":0,"secureConnectionStart":0},{"duration":181.80000019073486,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1047.0999999046326,"connectEnd":1047.0999999046326,"connectStart":1047.0999999046326,"domainLookupEnd":1047.0999999046326,"domainLookupStart":1047.0999999046326,"fetchStart":1047.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":1047.0999999046326,"responseEnd":1228.9000000953674,"responseStart":1228.9000000953674,"secureConnectionStart":1047.0999999046326}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":261,"responseStart":429,"responseEnd":435,"domLoading":432,"domInteractive":1268,"domContentLoadedEventStart":1268,"domContentLoadedEventEnd":1334,"domComplete":1855,"loadEventStart":1855,"loadEventEnd":1855,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1216.8000001907349},{"name":"bigPipe.sidebar-id.end","time":1217.5999999046326},{"name":"bigPipe.activity-panel-pipe-id.start","time":1217.8000001907349},{"name":"bigPipe.activity-panel-pipe-id.end","time":1220.0999999046326},{"name":"activityTabFullyLoaded","time":1354.5999999046326}],"measures":[],"correlationId":"d3f1dcaf507321","effectiveType":"4g","downlink":9.2,"rtt":0,"serverDuration":103,"dbReadsTimeInMs":14,"dbConnsTimeInMs":23,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
The debug assertion is redundant, because srv_read_only_mode implies !purge_sys.enabled(). That is, the function srv_wake_purge_thread_if_not_active() will do nothing else than evaluate purge_sys.enabled() if it is being invoked while InnoDB is in read-only mode.
Removing the debug assertion will also allow us to remove an unlikely condition from the end of trx_t::commit_in_memory() in 10.4 and 10.5. Starting with
MDEV-26193in 10.6, this function will not call srv_wake_purge_thread_if_not_active() anymore.I reproduced a hang of 10.4 using this patched test:
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
The statement would only be interruptible by KILL or SHUTDOWN. The fix is to make innodb_max_purge_lag_wait_update() return immediately if InnoDB is executing in read-only mode.