[MDEV-8195] InnoDB: Error: trying to access tablespace 11262 page no. 7, InnoDB: but the tablespace does not exist or is just being dropped. Created: 2015-05-20  Updated: 2015-05-21  Resolved: 2015-05-21

Status: Closed
Project: MariaDB Server
Component/s: Encryption, Storage Engine - InnoDB, Storage Engine - XtraDB
Affects Version/s: 10.1.4
Fix Version/s: 10.1.5

Type: Bug Priority: Major
Reporter: Jan Lindström (Inactive) Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 0
Labels: verified


 Description   

Use one of the below test cases few times:

2015-05-20 20:36:29 7ffa58ff9700  InnoDB: Error: trying to access tablespace 11262 page no. 7,
InnoDB: but the tablespace does not exist or is just being dropped.
InnoDB: Error: Unable to read tablespace 11262 page no 7 into the buffer pool after 100 attempts
InnoDB: The most probable cause of this error may be that the table has been corrupted.
InnoDB: You can try to fix this problem by using innodb_force_recovery.
InnoDB: Please see reference manual for more details.
InnoDB: Aborting...
2015-05-20 20:36:29 7ffa58ff9700  InnoDB: Assertion failure in thread 140713211696896 in file buf0buf.cc line 2817
 
#0  0x00007ffa93329621 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61
#1  0x00007ffa95b6909a in my_write_core (sig=6) at /home/jan/mysql/10.1-encryption/mysys/stacktrace.c:456
#2  0x00007ffa9551609e in handle_fatal_signal (sig=6) at /home/jan/mysql/10.1-encryption/sql/signal_handler.cc:266
#3  <signal handler called>
#4  0x00007ffa92983cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#5  0x00007ffa929870d8 in __GI_abort () at abort.c:89
#6  0x00007ffa95a43058 in buf_page_get_gen (space=11262, zip_size=0, offset=7, rw_latch=2, guess=0x0, mode=16, file=0x7ffa95de4180 "/home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc", line=1812, mtr=0x7ffa58ff88b0) at /home/jan/mysql/10.1-encryption/storage/xtradb/buf/buf0buf.cc:2817
#7  0x00007ffa95ac2d2d in fil_crypt_get_page_throttle_func (state=0x7ffa58ff8e10, space=11262, zip_size=0, offset=7, mtr=0x7ffa58ff88b0, sleeptime_ms=0x7ffa58ff8868, file=0x7ffa95de4180 "/home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc", line=1812) at /home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc:1697
#8  0x00007ffa95ac309a in fil_crypt_rotate_page (key_state=0x7ffa58ff8e00, state=0x7ffa58ff8e10) at /home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc:1809
#9  0x00007ffa95ac35f2 in fil_crypt_rotate_pages (key_state=0x7ffa58ff8e00, state=0x7ffa58ff8e10) at /home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc:1970
#10 0x00007ffa95ac3d09 in fil_crypt_thread (arg=0x0) at /home/jan/mysql/10.1-encryption/storage/xtradb/fil/fil0crypt.cc:2193
#11 0x00007ffa93324182 in start_thread (arg=0x7ffa58ff9700) at pthread_create.c:312
#12 0x00007ffa92a4747d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
 

query:
        INSERT IGNORE INTO _table ( _field ) VALUES ( _digit ), ( _digit ), ( _digit ), ( _digit ) |
        DELETE FROM _table WHERE `pk` > _digit LIMIT 4 ;
 
thread2:
        set_encrypt_option |
        create_or_replace;
 
set_encrypt_option:
        SET GLOBAL innodb_encrypt_tables = enc_tables |
        SET GLOBAL innodb_encryption_threads = _digit |
        SET GLOBAL innodb_scrub_log_speed = _smallint_unsigned 
;
 
encrypt_on_off:
        ON | OFF ;
 
enc_tables:
        ON | OFF | 'FORCE' ;
 
create_or_replace:
        CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM _table ;

RQG data template enc2.zz

$tables = {
	rows => [0, 1, 10 ],
	pk => [ 'int auto_increment' ]
};
 
$fields = {
	types => [ 'int' ],
	indexes => [ 'key', undef ]
};
 
$data = {
	numbers => [ 'digit', 'null', undef ],
	strings => [ 'letter', 'english' ],
	blobs => [ 'data' ],
	temporals => ['date', 'year', 'null', undef ]
}

RQG command line (use lp:~elenst/randgen/mariadb-patches):

perl ./runall-new.pl --threads=2 --duration=400 --queries=100M --mysqld=--plugin-load-add=file_key_management.so --mysqld=--file_key_management_filename=<your basedir>/mysql-test/std_data/keys.txt --grammar=enc2.yy --gendata=enc2.zz --mtr-build-thread=73 --basedir1=<your basedir> --vardir1=<your vardir>

See MDEV-8171 for instructions how to run the same test several times.



 Comments   
Comment by Jan Lindström (Inactive) [ 2015-05-21 ]

commit 536112dd30bbe68e1b0624ed68fbf96e333d9f80
Author: Jan Lindström <jan.lindstrom@mariadb.com>
Date: Thu May 21 15:07:19 2015 +0300

MDEV-8195: InnoDB: Error: trying to access tablespace 11262 page no. 7, InnoDB: but the tablespace does not exist or is just being dropped.

Analysis: Problem was that we did try to read from tablespace
that was being dropped.

Fixed by introducing a new function to find a tablespace only
if it is not being dropped currently and adding this check
before trying to read pages from tablespace.

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