Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.4.0
-
None
Description
In 10.4.x MariaDB changed the size of the rseg_history_len variable during switch to C++ atomics. MDEV-17441
Compare :
https://github.com/MariaDB/server/blob/10.3/storage/innobase/srv/srv0srv.cc#L2549
and
https://github.com/MariaDB/server/blob/10.4/storage/innobase/srv/srv0srv.cc#L2533
This regression remains through to 10.9
https://github.com/MariaDB/server/blob/5dba54bfef31d91c082362065cd091086e20ee9a/storage/innobase/srv/srv0srv.cc#L517
and
https://github.com/MariaDB/server/blob/5dba54bfef31d91c082362065cd091086e20ee9a/storage/innobase/srv/srv0srv.cc#L1593
Under 10.3 the value displayed in the information_schema.innodb_metrics name = trx_rseg_history_len truncates at 2^32 size and rolls over to 0. However since the underlying hitory length is still a 64 bit int the size rolls back to >4Bn transcations after some purging has occurred.
Under 10.4+ the behavior unknown at rollover. It appears there exists the chance that transactions can remain unpruned after rollover to 0.
MySQL 8.0 still uses a 64bit int here.
Attachments
Issue Links
- is caused by
-
MDEV-17441 InnoDB transition to C++11 atomics
- Closed