Commit db0fde3f authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-28665 aio_uring::thread_routine terminates prematurely, causing hang

aio_uring::thread_routine(): Handle -EINTR from io_uring_wait_cqe()
in the same way as aio_linux::getevent_thread_routine() does it:
simply ignore it and invoke the system call again.

Reviewed by: Vladislav Vaintroub
parent 57e66dc7
/* Copyright (C) 2021, MariaDB Corporation.
/* Copyright (C) 2021, 2022, MariaDB Corporation.
This program is free software; you can redistribute itand /or modify
it under the terms of the GNU General Public License as published by
......@@ -137,8 +137,8 @@ class aio_uring final : public tpool::aio
io_uring_cqe *cqe;
if (int ret= io_uring_wait_cqe(&aio->uring_, &cqe))
{
if (ret == -EINTR) // this may occur during shutdown
break;
if (ret == -EINTR)
continue;
my_printf_error(ER_UNKNOWN_ERROR,
"io_uring_wait_cqe() returned %d\n",
ME_ERROR_LOG | ME_FATAL, ret);
......@@ -147,7 +147,7 @@ class aio_uring final : public tpool::aio
auto *iocb= static_cast<tpool::aiocb*>(io_uring_cqe_get_data(cqe));
if (!iocb)
break;
break; // ~aio_uring() told us to terminate
int res= cqe->res;
if (res < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment