Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL)
-
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
|
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.