[MDEV-13476] TRX_UNDO_PAGE_TYPE mismatch when writing undo log after upgrade Created: 2017-08-08  Updated: 2017-08-13  Resolved: 2017-08-10

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: N/A
Fix Version/s: 10.3.1

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

Issue Links:
Problem/Incident
is caused by MDEV-12288 Reset DB_TRX_ID when the history is r... Closed
is caused by MDEV-13475 InnoDB: Failing assertion: lsn == log... Closed
Relates
relates to MDEV-13269 Upgrade tests for InnoDB undo log Closed

 Description   

Note: It's a continuation of MDEV-13475 and is probably a side-effect of it; but I want to have the assertion failure filed for the record, to have it searchable.

After the scenario in MDEV-13475 is executed and the failure described there occurs, start the server again, now without innodb-read-only (it starts all right), and try to execute some DML on a table, e.g. INSERT INTO t1 VALUES (2) on the datadir attached to MDEV-13475.

bb-10.3-monty 6baa5e56f1

mysqld: /data/src/bb-10.3-monty/storage/innobase/trx/trx0rec.cc:473: ulint trx_undo_page_report_insert(ib_page_t*, trx_t*, dict_index_t*, const dtuple_t*, mtr_t*): Assertion `*reinterpret_cast<uint16*>(38U + 0 + undo_page) =
= 0' failed.
170809  1:21:08 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f142f09aee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000056167a37e241 in trx_undo_page_report_insert (undo_page=0x7f140c050000 "\245K", <incomplete sequence \350>, trx=0x7f14198ddca8, index=0x7f13c0029fe8, clust_entry=0x7f13c0007eb8, mtr=0x7f14198d8580) at /data/src/bb-10.3-monty/storage/innobase/trx/trx0rec.cc:472
#9  0x000056167a381be0 in trx_undo_report_row_operation (thr=0x7f13c0021500, index=0x7f13c0029fe8, clust_entry=0x7f13c0007eb8, update=0x0, cmpl_info=0, rec=0x0, offsets=0x0, roll_ptr=0x7f14198d8b30) at /data/src/bb-10.3-monty/storage/innobase/trx/trx0rec.cc:1933
#10 0x000056167a3d6c76 in btr_cur_ins_lock_and_undo (flags=0, cursor=0x7f14198d8fe0, entry=0x7f13c0007eb8, thr=0x7f13c0021500, mtr=0x7f14198d9400, inherit=0x7f14198d8bc0) at /data/src/bb-10.3-monty/storage/innobase/btr/btr0cur.cc:2827
#11 0x000056167a3d75b6 in btr_cur_optimistic_insert (flags=0, cursor=0x7f14198d8fe0, offsets=0x7f14198d8f80, heap=0x7f14198d8f78, entry=0x7f13c0007eb8, rec=0x7f14198d8f88, big_rec=0x7f14198d8f70, n_ext=0, thr=0x7f13c0021500, mtr=0x7f14198d9400) at /data/src/bb-10.3-monty/storage/innobase/btr/btr0cur.cc:3040
#12 0x000056167a2aee25 in row_ins_clust_index_entry_low (flags=0, mode=2, index=0x7f13c0029fe8, n_uniq=0, entry=0x7f13c0007eb8, n_ext=0, thr=0x7f13c0021500, dup_chk_only=false) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:2719
#13 0x000056167a2b04c5 in row_ins_clust_index_entry (index=0x7f13c0029fe8, entry=0x7f13c0007eb8, thr=0x7f13c0021500, n_ext=0, dup_chk_only=false) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:3215
#14 0x000056167a2b088f in row_ins_index_entry (index=0x7f13c0029fe8, entry=0x7f13c0007eb8, thr=0x7f13c0021500) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:3322
#15 0x000056167a2b0da1 in row_ins_index_entry_step (node=0x7f13c00212a8, thr=0x7f13c0021500) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:3472
#16 0x000056167a2b1160 in row_ins (node=0x7f13c00212a8, thr=0x7f13c0021500) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:3614
#17 0x000056167a2b18f5 in row_ins_step (thr=0x7f13c0021500) at /data/src/bb-10.3-monty/storage/innobase/row/row0ins.cc:3818
#18 0x000056167a2cf529 in row_insert_for_mysql (mysql_rec=0x7f13c000e708 "\375\002", prebuilt=0x7f13c0020af8) at /data/src/bb-10.3-monty/storage/innobase/row/row0mysql.cc:1484
#19 0x000056167a18e816 in ha_innobase::write_row (this=0x7f13c0020308, record=0x7f13c000e708 "\375\002") at /data/src/bb-10.3-monty/storage/innobase/handler/ha_innodb.cc:8444
#20 0x0000561679e83680 in handler::ha_write_row (this=0x7f13c0020308, buf=0x7f13c000e708 "\375\002") at /data/src/bb-10.3-monty/sql/handler.cc:5982
#21 0x0000561679b9c009 in write_record (thd=0x7f13c0000b00, table=0x7f13c001f700, info=0x7f14198da200) at /data/src/bb-10.3-monty/sql/sql_insert.cc:1929
#22 0x0000561679b99a8b in mysql_insert (thd=0x7f13c0000b00, table_list=0x7f13c0013528, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false) at /data/src/bb-10.3-monty/sql/sql_insert.cc:1057
#23 0x0000561679bcafcc in mysql_execute_command (thd=0x7f13c0000b00) at /data/src/bb-10.3-monty/sql/sql_parse.cc:4621
#24 0x0000561679bd56b6 in mysql_parse (thd=0x7f13c0000b00, rawbuf=0x7f13c0013448 "insert into t1 values (2)", length=25, parser_state=0x7f14198db660, is_com_multi=false, is_next_command=false) at /data/src/bb-10.3-monty/sql/sql_parse.cc:7919
#25 0x0000561679bc383f in dispatch_command (command=COM_QUERY, thd=0x7f13c0000b00, packet=0x7f13c001a571 "insert into t1 values (2)", packet_length=25, is_com_multi=false, is_next_command=false) at /data/src/bb-10.3-monty/sql/sql_parse.cc:1829
#26 0x0000561679bc22e1 in do_command (thd=0x7f13c0000b00) at /data/src/bb-10.3-monty/sql/sql_parse.cc:1380
#27 0x0000561679d115cc in do_handle_one_connection (connect=0x56167dc22240) at /data/src/bb-10.3-monty/sql/sql_connect.cc:1354
#28 0x0000561679d11359 in handle_one_connection (arg=0x56167dc22240) at /data/src/bb-10.3-monty/sql/sql_connect.cc:1260
#29 0x00007f1430fdf494 in start_thread (arg=0x7f14198dc700) at pthread_create.c:333
#30 0x00007f142f15793f in clone () from /lib/x86_64-linux-gnu/libc.so.6



 Comments   
Comment by Marko Mäkelä [ 2017-08-10 ]

After relaxing the too-strict debug assertions on TRX_UNDO_PAGE_TYPE, I tested with the following:

--source include/have_innodb.inc
SELECT * FROM t1;
BEGIN;
INSERT INTO t1 VALUES (2);
DELETE FROM t1;
ROLLBACK;
SELECT * FROM t1;

./mtr --manual-gdb main.dml

show args
run [args copied from the output of the above] --datadir /path/to/data

These are too strict debug assertions. When undo logs pre-exist, the page types could be 1 (for insert_undo) or 2 (update_undo), instead of the new unified page type 0 that was introduced in MDEV-12288.

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