[MDEV-20138] innodb.trx_id_future fails in buildbot Created: 2019-07-23  Updated: 2019-08-14  Resolved: 2019-08-13

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Tests
Affects Version/s: 10.1, 10.3
Fix Version/s: 10.1.42, 10.3.18, 10.4.8

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 1
Labels: None

Issue Links:
Problem/Incident
is caused by MDEV-13626 Merge InnoDB test cases from MySQL 5.7 Closed

 Description   

innodb.trx_id_future fails in buildbot with "Table doesn't exist in engine"

http://buildbot.askmonty.org/buildbot/builders/kvm-rpm-centos73-ppc64/builds/9598/steps/mtr/logs/stdio

10.1 1f498f901b394e869c430b777fdc233a

innodb.trx_id_future 'innodb_plugin'     w2 [ fail ]
        Test ended at 2019-07-23 14:45:00
 
CURRENT_TEST: innodb.trx_id_future
mysqltest: At line 57: query 'SELECT * FROM t1' failed: 1932: Table 'test.t1' doesn't exist in engine
 
The result from queries just before the failure was:
#
# Bug #20445525	ADD A CONSISTENCY CHECK AGAINST DB_TRX_ID BEING
#		IN THE FUTURE
#
CREATE TABLE t1(a INT) row_format=redundant engine=innoDB;
INSERT INTO t1 VALUES(1);
NOT FOUND /\[Warning\] InnoDB: A transaction id in a record of table `test`\.`t1` is newer than the system-wide maximum/ in mysqld.1.err
call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum");
SELECT * FROM t1;



 Comments   
Comment by Aleksey Midenkov [ 2019-08-10 ]

trx_id_future is unstable in 10.3:

http://buildbot.askmonty.org/buildbot/builders/kvm-rpm-centos73-ppc64/builds/9644

CURRENT_TEST: innodb.trx_id_future
--- /usr/share/mysql-test/suite/innodb/r/trx_id_future.result	2019-07-27 08:07:27.000000000 +0000
+++ /dev/shm/var/2/log/trx_id_future.reject	2019-07-27 11:56:36.350175707 +0000
@@ -8,6 +8,5 @@
 call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum");
 SELECT * FROM t1;
 a
-Warnings:
-Warning	1642	InnoDB: Transaction id in a record of table `test`.`t1` is newer than system-wide maximum.
+1
 DROP TABLE t1;

Comment by Marko Mäkelä [ 2019-08-13 ]

On 10.1, the test fails on big-endian environments, because innodb_checksum_algorithm=crc32 wrongly assumes little-endian byte order. I think that it is easiest to change the test to compute the dummy innodb_checksum_algorithm=none checksum on 10.1, and null-merge that change to 10.2.

The problem on 10.3 and 10.4 should be something else, possibly related to MDEV-12288. I will investigate. I was unable to reproduce any failure on 10.2 locally, and the cross-reference did not find any either.

Comment by Marko Mäkelä [ 2019-08-13 ]

The issues were specific for the test only. No code changes were made.

On 10.1, we will skip the test on big-endian systems, because the implementation of innodb_checksum_algorithm=crc32 wrongly assumes little-endian byte order.
On 10.3 and later, we must ensure that purge has run into completion before we shut down the server and corrupt the transaction identifier, so that the corruption will remain after restart.

Generated at Thu Feb 08 08:57:07 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.