]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/.../client_request: always remove from orderer in complete_request
authorSamuel Just <sjust@redhat.com>
Thu, 10 Oct 2024 00:42:36 +0000 (00:42 +0000)
committerSamuel Just <sjust@redhat.com>
Thu, 7 Nov 2024 18:29:42 +0000 (10:29 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/osd_operations/client_request.cc
src/crimson/osd/osd_operations/client_request.h

index 38960b675ad3b41244c4b87130a969531c93da18..368ee4eb2a2daaf4feb7355376f604096760ff7e 100644 (file)
@@ -43,15 +43,17 @@ void ClientRequest::Orderer::clear_and_cancel(PG &pg)
 {
   LOG_PREFIX(ClientRequest::Orderer::clear_and_cancel);
   for (auto i = list.begin(); i != list.end(); ) {
-    DEBUGDPP("{}", pg, *i);
-    i->complete_request();
-    remove_request(*(i++));
+    auto &req = *i;
+    DEBUGDPP("{}", pg, req);
+    ++i;
+    req.complete_request(pg);
   }
 }
 
-void ClientRequest::complete_request()
+void ClientRequest::complete_request(PG &pg)
 {
   track_event<CompletionEvent>();
+  pg.client_request_orderer.remove_request(*this);
   on_complete.set_value();
 }
 
@@ -152,8 +154,7 @@ ClientRequest::interruptible_future<> ClientRequest::with_pg_process_interruptib
        std::ref(get_foreign_connection()), m->get_map_epoch()
       ));
     DEBUGDPP("{}: discarding {}", *pgref, *this, this_instance_id);
-    pgref->client_request_orderer.remove_request(*this);
-    complete_request();
+    complete_request(pg);
     co_return;
   }
   DEBUGDPP("{}.{}: entering await_map stage",
@@ -242,8 +243,7 @@ ClientRequest::interruptible_future<> ClientRequest::with_pg_process_interruptib
   DEBUGDPP("{}.{}: process[_pg]_op complete,"
           "removing request from orderer",
           *pgref, *this, this_instance_id);
-  pgref->client_request_orderer.remove_request(*this);
-  complete_request();
+  complete_request(pg);
 }
 
 seastar::future<> ClientRequest::with_pg_process(
index 9df33127fb0f9b4ac448c535b22e9351bacdae8f..6d1043e27835eaf88f5063b568f9d77b68e5e9a3 100644 (file)
@@ -210,7 +210,7 @@ public:
     void requeue(Ref<PG> pg);
     void clear_and_cancel(PG &pg);
   };
-  void complete_request();
+  void complete_request(PG &pg);
 
   static constexpr OperationTypeCode type = OperationTypeCode::client_request;