← Back to team overview

maria-developers team mailing list archive

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

 

On Thu, May 11, 2017 at 11:25 AM, jan <jan.lindstrom@xxxxxxxxxxx> wrote:

> revision-id: 8edbb1117a9e1fd81fbd08b8f1d06c72efe38f44 (mariadb-10.2.5-168-
> g8edbb1117a9)
> parent(s): f4df8c00c957146f04db031f1f9f80aab229d1d2
> author: Jan Lindström
> committer: Jan Lindström
> timestamp: 2017-05-11 11:15:37 +0300
> message:
>
> 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()
>
[snip]

> @@ -178,7 +180,7 @@ buf_read_page_low(
>
>         *err = fil_io(
>                 request, sync, page_id, page_size, 0, page_size.physical(),
> -               dst, bpage);
> +               dst, bpage, ignore_missing_space);
>
>         if (sync) {
>                 thd_wait_end(NULL);
>

Can you please add the parameter to the IORequest? It would seem to be a
more appropriate place for this.
(Ideally, fil_io() would only take the request as a parameter, but we do
not want to do such a big refactoring right now.)

Marko