[MDEV-12741] innodb.ibuf_not_empty failed in buildbot with "InnoDB: Trying to do I/O to a tablespace which does not exist" Created: 2017-05-08  Updated: 2017-08-31  Resolved: 2017-08-31

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Tests
Affects Version/s: 10.2
Fix Version/s: 10.2.9, 10.3.2

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


 Description   

http://buildbot.askmonty.org/buildbot/builders/win32-debug/builds/3643/steps/test/logs/stdio

innodb.ibuf_not_empty 'innodb'           w2 [ fail ]  Found warnings/errors in server log file!
        Test ended at 2017-05-02 11:56:59
line
2017-05-02 11:56:58 21296 [ERROR] InnoDB: Trying to do I/O to a tablespace which does not exist. I/O type: read, page: [page id: space=92, page number=16], I/O length: 16384 bytes
 
^ Found warnings in D:/win32-debug/build/mysql-test/var/2/log/mysqld.1.err



 Comments   
Comment by Jan Lindström (Inactive) [ 2017-05-09 ]

Not easy to repeat: /mtr --vardir=/dev/shm innodb.ibuf_not_empty --repeat=40 no luck on Linux, changing to Windows.

Comment by Jan Lindström (Inactive) [ 2017-05-09 ]

With Windows this is repeatable (with --repeat=40 after ~15 rounds).

Comment by Jan Lindström (Inactive) [ 2017-05-11 ]

https://github.com/MariaDB/server/commit/8edbb1117a9e1fd81fbd08b8f1d06c72efe38f44

Comment by Jan Lindström (Inactive) [ 2017-05-11 ]

Tested on Windows with mysql-test-run.pl ibuf_not_empty --repeat=60 (normally it did give the error in less than 10 rounds).

Comment by Marko Mäkelä [ 2017-05-16 ]

This might be a regression introduced by me when I removed the field tablespace_version in MySQL 5.7. OK to push.

Comment by Jan Lindström (Inactive) [ 2017-08-31 ]

commit aa22981dd2bfb710240ca377d07575e5359344a9
Author: Jan Lindström <jan.lindstrom@mariadb.com>
Date: Thu May 11 11:15:37 2017 +0300

MDEV-12741: innodb.ibuf_not_empty failed in buildbot with "InnoDB: Trying to do I/O to a tablespace which does not exist"

Background thread is doing ibuf merge, in buf0rea.cc buf_read_ibuf_merge_pages().
It first tries to get page_size and if space is not found it deletes them, but
as we do not hold any mutexes, space can be marked as stopped between that
and buf_read_page_low() for same space. This naturally leads seen error
message on log.

buf_read_page_low(): Add parameter ignore_missing_space = false that
is passed to fil_io()

buf_read_ibuf_merge_pages(): call buf_read_page_low with
ignore_missing_space = true, this function will handle missing
space error code after buf_read_page_low returns.

fil_io(): if ignore_missing_space = true do not print error
message about trying to do I/0 for missing space, just return
correct error code that is handled later.

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