I used my fuzzing tool to test MariaDB and found a transaction-related bug that make the server produce different results.
Mariadb installation
1) cd mariadb-10.10.1
2) mkdir build; cd build
3) cmake .. -DCMAKE_BUILD_TYPE=Debug -DWITH_ASAN=ON
4) make -j12 && sudo make install
Setup the environment
1) /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql &
2) /usr/local/mysql/bin/mysql -uroot -Dtestdb < mysql_bk.sql # set up the database, mysql_bk.sql is attached.
Reproduce bug
/usr/local/mysql/bin/mysql -uroot -Dtestdb # set up for the transaction T0
/usr/local/mysql/bin/mysql -uroot -Dtestdb # set up for the transaction T1
T0> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
T1> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
T1> START TRANSACTION;
T1> update t_g6ckkb set wkey = 162;
T0> START TRANSACTION;
T0> select * from t_g6ckkb;
T1> COMMIT;
T0> select * from t_rpjlsd where t_rpjlsd.c_pfd8ab <= (select min(wkey) from t_g6ckkb);
Analysis
The first SELECT in T0 and the UPDATE in T0 should handle the same rows because they use the same predicate (WHERE clause) and execute adjacently. However, the first SELECT in T0 outputs only 1 row while the UPDATE in T0 changes 2 rows. To make sure what the UPDATE in T0 changes, we use the second SELECT in T0, and it outputs the changed 2 rows.
Based on the analysis, I think it might be a bug triggering inconsistent read (first SELECT in T0) and write (UPDATE in T0).
SET SESSION TRANSACTIONISOLATIONLEVELREPEATABLEREAD;
START TRANSACTION;
UPDATE t_g6ckkb SET wkey=53 LIMIT 1;
--connection default
SET SESSION TRANSACTIONISOLATIONLEVELREPEATABLEREAD;
START TRANSACTIONWITH CONSISTENT SNAPSHOT;
--connection con1
COMMIT;
--disconnect con1
--connection default
select * from t_g6ckkb;
select * from t_rpjlsd where c_pfd8ab <= (selectmin(wkey) from t_g6ckkb);
update t_rpjlsd set wkey = 63 where c_pfd8ab <= (selectmin(wkey) from t_g6ckkb);
select * from t_rpjlsd;
COMMIT;
DROPTABLE t_rpjlsd,t_g6ckkb;
I looked up another reported read view anomaly MDEV-26642, but that scenario is different. Here, the subquery executed during the UPDATE will use a locking read, which is essentially a combination of READ UNCOMMITTED and a lock. The locking read was enabled by the SQL layer:
10.6 5d9d379329abcbb661ed6c027efbb9fd763958c6
Thread 12 hit Hardware watchpoint 3: -location m_prebuilt.select_lock_type
Old value = LOCK_NONE
New value = LOCK_S
ha_innobase::store_lock (this=0x61d0002864b8, thd=<optimized out>, to=<optimized out>, lock_type=TL_READ) at /mariadb/10.6/storage/innobase/handler/ha_innodb.cc:16528
#0 ha_innobase::store_lock (this=0x61d0002864b8, thd=<optimized out>, to=<optimized out>, lock_type=TL_READ) at /mariadb/10.6/storage/innobase/handler/ha_innodb.cc:16528
#1 0x000056451f6c1550 in get_lock_data (thd=thd@entry=0x62b0000bd218, table_ptr=table_ptr@entry=0x62b0000c6a60, count=count@entry=2, flags=flags@entry=3) at /mariadb/10.6/sql/lock.cc:812
#2 0x000056451f6c1951 in mysql_lock_tables (thd=thd@entry=0x62b0000bd218, tables=tables@entry=0x62b0000c6a60, count=count@entry=2, flags=flags@entry=0) at /mariadb/10.6/sql/lock.cc:301
#3 0x000056451f77f156 in lock_tables (thd=thd@entry=0x62b0000bd218, tables=0x62b0000c43c0, count=<optimized out>, flags=flags@entry=0) at /mariadb/10.6/sql/sql_base.cc:5550
#4 0x000056451fc19b2a in mysql_update (thd=thd@entry=0x62b0000bd218, table_list=<optimized out>,
fields=@0x62b0000c2018: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x62b0000c4c90, last = 0x62b0000c4c90, elements = 1}, <No data fields>},
values=@0x62b0000c2440: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x62b0000c4ca8, last = 0x62b0000c4ca8, elements = 1}, <No data fields>}, conds=<optimized out>, order_num=<optimized out>,
#5 0x000056451f987ab7 in mysql_execute_command (thd=thd@entry=0x62b0000bd218, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /mariadb/10.6/sql/sql_parse.cc:4408
#6 0x000056451f993713 in mysql_parse (thd=thd@entry=0x62b0000bd218, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7f6198c61a00) at /mariadb/10.6/sql/sql_parse.cc:8030
#7 0x000056451f997ae4 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62b0000bd218,
packet=packet@entry=0x629000276219 "update t_rpjlsd set wkey = 63 where c_pfd8ab <= (select min(wkey) from t_g6ckkb)", packet_length=packet_length@entry=80, blocking=blocking@entry=true)
at /mariadb/10.6/sql/sql_parse.cc:1896
I am not sure what the correct fix should be. Like in MDEV-26642, a locking read has probably been used for the ‘read’ part since the beginning of MySQL, and some applications could break if this were changed. MDEV-24813 lists some other statements that should suffer from the same. These include INSERT…SELECT.
Marko Mäkelä
added a comment - Here is a simpler version of the test:
--source include/have_innodb.inc
CREATE TABLE t_g6ckkb (wkey int ) ENGINE=InnoDB;
INSERT INTO t_g6ckkb VALUES (20),(56);
CREATE TABLE t_rpjlsd (
wkey int ,
pkey int PRIMARY KEY ,
c_pfd8ab int
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t_rpjlsd VALUES (43,243000,8),(57,332000,53);
--connect con1,localhost,root
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
START TRANSACTION ;
UPDATE t_g6ckkb SET wkey=53 LIMIT 1;
--connection default
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
--connection con1
COMMIT ;
--disconnect con1
--connection default
select * from t_g6ckkb;
select * from t_rpjlsd where c_pfd8ab <= ( select min (wkey) from t_g6ckkb);
update t_rpjlsd set wkey = 63 where c_pfd8ab <= ( select min (wkey) from t_g6ckkb);
select * from t_rpjlsd;
COMMIT ;
DROP TABLE t_rpjlsd,t_g6ckkb;
I looked up another reported read view anomaly MDEV-26642 , but that scenario is different. Here, the subquery executed during the UPDATE will use a locking read, which is essentially a combination of READ UNCOMMITTED and a lock. The locking read was enabled by the SQL layer:
10.6 5d9d379329abcbb661ed6c027efbb9fd763958c6
Thread 12 hit Hardware watchpoint 3: -location m_prebuilt.select_lock_type
Old value = LOCK_NONE
New value = LOCK_S
ha_innobase::store_lock (this=0x61d0002864b8, thd=<optimized out>, to=<optimized out>, lock_type=TL_READ) at /mariadb/10.6/storage/innobase/handler/ha_innodb.cc:16528
16528 m_prebuilt->stored_select_lock_type = LOCK_S;
(rr) print m_prebuilt.table.name
$6 = {m_name = 0x604000025668 "test/t_g6ckkb"}
(rr) backtrace
#0 ha_innobase::store_lock (this=0x61d0002864b8, thd=<optimized out>, to=<optimized out>, lock_type=TL_READ) at /mariadb/10.6/storage/innobase/handler/ha_innodb.cc:16528
#1 0x000056451f6c1550 in get_lock_data (thd=thd@entry=0x62b0000bd218, table_ptr=table_ptr@entry=0x62b0000c6a60, count=count@entry=2, flags=flags@entry=3) at /mariadb/10.6/sql/lock.cc:812
#2 0x000056451f6c1951 in mysql_lock_tables (thd=thd@entry=0x62b0000bd218, tables=tables@entry=0x62b0000c6a60, count=count@entry=2, flags=flags@entry=0) at /mariadb/10.6/sql/lock.cc:301
#3 0x000056451f77f156 in lock_tables (thd=thd@entry=0x62b0000bd218, tables=0x62b0000c43c0, count=<optimized out>, flags=flags@entry=0) at /mariadb/10.6/sql/sql_base.cc:5550
#4 0x000056451fc19b2a in mysql_update (thd=thd@entry=0x62b0000bd218, table_list=<optimized out>,
fields=@0x62b0000c2018: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x62b0000c4c90, last = 0x62b0000c4c90, elements = 1}, <No data fields>},
values=@0x62b0000c2440: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x62b0000c4ca8, last = 0x62b0000c4ca8, elements = 1}, <No data fields>}, conds=<optimized out>, order_num=<optimized out>,
order=<optimized out>, limit=<optimized out>, ignore=<optimized out>, found_return=<optimized out>, updated_return=<optimized out>) at /mariadb/10.6/sql/sql_update.cc:442
#5 0x000056451f987ab7 in mysql_execute_command (thd=thd@entry=0x62b0000bd218, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /mariadb/10.6/sql/sql_parse.cc:4408
#6 0x000056451f993713 in mysql_parse (thd=thd@entry=0x62b0000bd218, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7f6198c61a00) at /mariadb/10.6/sql/sql_parse.cc:8030
#7 0x000056451f997ae4 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62b0000bd218,
packet=packet@entry=0x629000276219 "update t_rpjlsd set wkey = 63 where c_pfd8ab <= (select min(wkey) from t_g6ckkb)", packet_length=packet_length@entry=80, blocking=blocking@entry=true)
at /mariadb/10.6/sql/sql_parse.cc:1896
I am not sure what the correct fix should be. Like in MDEV-26642 , a locking read has probably been used for the ‘read’ part since the beginning of MySQL, and some applications could break if this were changed. MDEV-24813 lists some other statements that should suffer from the same. These include INSERT…SELECT .
If a transaction does update or delete rows committed by a different transaction, those changes do become visible to the current transaction
This is an inherent part (or limitation?) of InnoDB design.
Sergei Golubchik
added a comment - - edited This is intentional and expected behavior. May be it's not sufficiently clear documented in KB, we need to correct that.
MySQL manual, though, clearly says
If a transaction does update or delete rows committed by a different transaction, those changes do become visible to the current transaction
This is an inherent part (or limitation?) of InnoDB design.
If I set innodb_snapshot_isolation=ON (introduced in the fix of MDEV-26642, MDEV-26643, MDEV-32898; see PR#3067), then my test case will fail instead of producing inconsistent results:
10.6 b8a671988954870b7db22e20d1a1409fd40f8e3d
mysqltest: At line 29: query 'update t_rpjlsd set wkey = 63 where c_pfd8ab <= (select min(wkey) from t_g6ckkb)' failed: ER_CHECKREAD (1020): Record has changed since last read in table 't_g6ckkb'
Marko Mäkelä
added a comment - If I set innodb_snapshot_isolation=ON (introduced in the fix of MDEV-26642 , MDEV-26643 , MDEV-32898 ; see PR#3067 ), then my test case will fail instead of producing inconsistent results:
10.6 b8a671988954870b7db22e20d1a1409fd40f8e3d
mysqltest: At line 29: query 'update t_rpjlsd set wkey = 63 where c_pfd8ab <= (select min(wkey) from t_g6ckkb)' failed: ER_CHECKREAD (1020): Record has changed since last read in table 't_g6ckkb'
People
Marko Mäkelä
Zuming Jiang
Votes:
0Vote for this issue
Watchers:
5Start 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":5384,"ttfb":1039,"pageVisibility":"visible","entityId":114767,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0,"journeyId":"93ce7955-0572-4e77-b6f4-595bc0c04399","navigationType":0,"readyForUser":5591.800000190735,"redirectCount":0,"resourceLoadedEnd":4533.800000190735,"resourceLoadedStart":1061.9000000953674,"resourceTiming":[{"duration":998.9000000953674,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":1061.9000000953674,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1061.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2060.800000190735,"responseStart":0,"secureConnectionStart":0},{"duration":998.9000000953674,"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":1062.2000000476837,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1062.2000000476837,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2061.100000143051,"responseStart":0,"secureConnectionStart":0},{"duration":2955.7000000476837,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":1062.4000000953674,"connectEnd":1062.4000000953674,"connectStart":1062.4000000953674,"domainLookupEnd":1062.4000000953674,"domainLookupStart":1062.4000000953674,"fetchStart":1062.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":2068.100000143051,"responseEnd":4018.100000143051,"responseStart":2865.300000190735,"secureConnectionStart":1062.4000000953674},{"duration":3226.300000190735,"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":1062.5,"connectEnd":1062.5,"connectStart":1062.5,"domainLookupEnd":1062.5,"domainLookupStart":1062.5,"fetchStart":1062.5,"redirectEnd":0,"redirectStart":0,"requestStart":2068.2000000476837,"responseEnd":4288.800000190735,"responseStart":2781.300000190735,"secureConnectionStart":1062.5},{"duration":2083.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":1062.7000000476837,"connectEnd":1062.7000000476837,"connectStart":1062.7000000476837,"domainLookupEnd":1062.7000000476837,"domainLookupStart":1062.7000000476837,"fetchStart":1062.7000000476837,"redirectEnd":0,"redirectStart":0,"requestStart":2068.800000190735,"responseEnd":3146.2000000476837,"responseStart":2876.9000000953674,"secureConnectionStart":1062.7000000476837},{"duration":2083.2000000476837,"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":1062.9000000953674,"connectEnd":1062.9000000953674,"connectStart":1062.9000000953674,"domainLookupEnd":1062.9000000953674,"domainLookupStart":1062.9000000953674,"fetchStart":1062.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":2068.5,"responseEnd":3146.100000143051,"responseStart":2875,"secureConnectionStart":1062.9000000953674},{"duration":2080.2000000476837,"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":1066.1000001430511,"connectEnd":1066.1000001430511,"connectStart":1066.1000001430511,"domainLookupEnd":1066.1000001430511,"domainLookupStart":1066.1000001430511,"fetchStart":1066.1000001430511,"redirectEnd":0,"redirectStart":0,"requestStart":2089.300000190735,"responseEnd":3146.300000190735,"responseStart":3015,"secureConnectionStart":1066.1000001430511},{"duration":996.0999999046326,"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":1066.3000001907349,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1066.3000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2062.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":2079.9000000953674,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":1066.5,"connectEnd":1066.5,"connectStart":1066.5,"domainLookupEnd":1066.5,"domainLookupStart":1066.5,"fetchStart":1066.5,"redirectEnd":0,"redirectStart":0,"requestStart":2112,"responseEnd":3146.4000000953674,"responseStart":3121.7000000476837,"secureConnectionStart":1066.5},{"duration":995.8999998569489,"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":1066.6000001430511,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1066.6000001430511,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2062.5,"responseStart":0,"secureConnectionStart":0},{"duration":2143.2999999523163,"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":1066.8000001907349,"connectEnd":1066.8000001907349,"connectStart":1066.8000001907349,"domainLookupEnd":1066.8000001907349,"domainLookupStart":1066.8000001907349,"fetchStart":1066.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":2116.600000143051,"responseEnd":3210.100000143051,"responseStart":3146.600000143051,"secureConnectionStart":1066.8000001907349},{"duration":3465.4000000953674,"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":1068.2000000476837,"connectEnd":1068.2000000476837,"connectStart":1068.2000000476837,"domainLookupEnd":1068.2000000476837,"domainLookupStart":1068.2000000476837,"fetchStart":1068.2000000476837,"redirectEnd":0,"redirectStart":0,"requestStart":3374.800000190735,"responseEnd":4533.600000143051,"responseStart":4474.700000047684,"secureConnectionStart":1068.2000000476837},{"duration":3448.9000000953674,"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":1084.9000000953674,"connectEnd":1084.9000000953674,"connectStart":1084.9000000953674,"domainLookupEnd":1084.9000000953674,"domainLookupStart":1084.9000000953674,"fetchStart":1084.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":3473.9000000953674,"responseEnd":4533.800000190735,"responseStart":4526.5,"secureConnectionStart":1084.9000000953674},{"duration":610.7999999523163,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":4175.100000143051,"connectEnd":4175.100000143051,"connectStart":4175.100000143051,"domainLookupEnd":4175.100000143051,"domainLookupStart":4175.100000143051,"fetchStart":4175.100000143051,"redirectEnd":0,"redirectStart":0,"requestStart":4635.900000095367,"responseEnd":4785.900000095367,"responseStart":4730.300000190735,"secureConnectionStart":4175.100000143051},{"duration":563.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":4995.200000047684,"connectEnd":4995.200000047684,"connectStart":4995.200000047684,"domainLookupEnd":4995.200000047684,"domainLookupStart":4995.200000047684,"fetchStart":4995.200000047684,"redirectEnd":0,"redirectStart":0,"requestStart":5416.800000190735,"responseEnd":5558.700000047684,"responseStart":5545.800000190735,"secureConnectionStart":4995.200000047684},{"duration":560.8999998569489,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":5095.300000190735,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":5095.300000190735,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":5656.200000047684,"responseStart":0,"secureConnectionStart":0}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":809,"responseStart":1039,"responseEnd":1085,"domLoading":1059,"domInteractive":5757,"domContentLoadedEventStart":5757,"domContentLoadedEventEnd":5858,"domComplete":7331,"loadEventStart":7331,"loadEventEnd":7331,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":5675.5},{"name":"bigPipe.sidebar-id.end","time":5676.200000047684},{"name":"bigPipe.activity-panel-pipe-id.start","time":5676.5},{"name":"bigPipe.activity-panel-pipe-id.end","time":5681.300000190735},{"name":"activityTabFullyLoaded","time":5910}],"measures":[],"correlationId":"57fc29489e47ec","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":135,"dbReadsTimeInMs":15,"dbConnsTimeInMs":24,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
confirmed on 10.3.37-beffef9f0019d4519447339564d2cf18bebb8401 too