From 00e845f5acd322fcd6557eaae492aae88d45dedd Mon Sep 17 00:00:00 2001 From: yanyupeng2018 <147487232+yanyupeng2018@users.noreply.github.com> Date: Mon, 27 May 2024 15:29:35 +0800 Subject: [PATCH] BufFix: fix the problem that AsyncIO fails to correctly handle the return value when using SQ_POLL (#132) --- trpc/runtime/iomodel/async_io/async_io.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trpc/runtime/iomodel/async_io/async_io.cc b/trpc/runtime/iomodel/async_io/async_io.cc index 179b75e3..be93d1eb 100644 --- a/trpc/runtime/iomodel/async_io/async_io.cc +++ b/trpc/runtime/iomodel/async_io/async_io.cc @@ -108,7 +108,7 @@ trpc::Future AsyncIO::SubmitOne(F&& fill_sqe) { io_uring_sqe_set_data(sqe, user_data); int ret = io_uring_submit(ring); - if (TRPC_UNLIKELY(ret != 1)) { + if (TRPC_UNLIKELY(ret <= 0)) { trpc::object_pool::Delete(user_data); if (ret < 0) { return MakeExceptionFuture(AsyncIOError(ret)); @@ -116,7 +116,7 @@ trpc::Future AsyncIO::SubmitOne(F&& fill_sqe) { std::string msg = "Submit success but return not one, ret:" + std::to_string(ret); return MakeExceptionFuture(AsyncIOError(AsyncIOError::SUBMIT_FAIL, msg)); } - submitted_++; + submitted_ += ret; return user_data->pr.GetFuture(); }