From bd5efa44b74ae03e095c70a88093ad4b02718aaa Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 10 Oct 2024 00:59:20 +0000 Subject: [PATCH] crimson/.../client_request: complete_request() only in with_pg_process This avoids needing to annotate every exit point in with_pg_process_interruptible with complete_request. Regardless of the result, completing with_pg_process_interruptible without an interruption means that the request is over. Signed-off-by: Samuel Just --- src/crimson/osd/osd_operations/client_request.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index 368ee4eb2a2..61a56600a57 100644 --- a/src/crimson/osd/osd_operations/client_request.cc +++ b/src/crimson/osd/osd_operations/client_request.cc @@ -154,7 +154,6 @@ ClientRequest::interruptible_future<> ClientRequest::with_pg_process_interruptib std::ref(get_foreign_connection()), m->get_map_epoch() )); DEBUGDPP("{}: discarding {}", *pgref, *this, this_instance_id); - complete_request(pg); co_return; } DEBUGDPP("{}.{}: entering await_map stage", @@ -243,7 +242,6 @@ ClientRequest::interruptible_future<> ClientRequest::with_pg_process_interruptib DEBUGDPP("{}.{}: process[_pg]_op complete," "removing request from orderer", *pgref, *this, this_instance_id); - complete_request(pg); } seastar::future<> ClientRequest::with_pg_process( @@ -260,7 +258,11 @@ seastar::future<> ClientRequest::with_pg_process( auto &ihref = *instance_handle; return interruptor::with_interruption( [this, pgref, this_instance_id, &ihref]() mutable { - return with_pg_process_interruptible(pgref, this_instance_id, ihref); + return with_pg_process_interruptible( + pgref, this_instance_id, ihref + ).then_interruptible([this, pgref] { + complete_request(*pgref); + }); }, [FNAME, this, this_instance_id, pgref](std::exception_ptr eptr) { DEBUGDPP("{}.{}: interrupted due to {}", *pgref, *this, this_instance_id, eptr); -- 2.39.5