]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/osd_operations/client_request: Skip do_recover_missing() on replica
authorMatan Breizman <mbreizma@redhat.com>
Sun, 11 Dec 2022 13:44:17 +0000 (13:44 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 7 Mar 2023 08:11:34 +0000 (08:11 +0000)
* assert internal_client_request is on primary since
  do_recover_missing is also called by internal requests.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/osd_operations/client_request.cc
src/crimson/osd/osd_operations/client_request_common.cc
src/crimson/osd/osd_operations/internal_client_request.cc

index 79808e822338c6900b2d56ee63f22a8ab32ca0e3..df2ea1523b61c3b824ffb2dea04e2d388fcc76e0 100644 (file)
@@ -211,7 +211,13 @@ ClientRequest::process_op(instance_handle_t &ihref, Ref<PG> &pg)
     *this
   ).then_interruptible(
     [this, pg]() mutable {
-    return do_recover_missing(pg, m->get_hobj());
+    if (pg->is_primary()) {
+      return do_recover_missing(pg, m->get_hobj());
+    } else {
+      logger().debug("process_op: Skipping do_recover_missing"
+                     "on non primary pg");
+      return interruptor::now();
+    }
   }).then_interruptible([this, pg, &ihref]() mutable {
     return pg->already_complete(m->get_reqid()).then_interruptible(
       [this, pg, &ihref](auto completed) mutable
index e383d24e03b0d5fc69678f3a117b6649908e7b1f..cfd22c774e06e295eb526c07950c6b6d8fca6a85 100644 (file)
@@ -18,6 +18,7 @@ CommonClientRequest::do_recover_missing(
   Ref<PG>& pg, const hobject_t& soid)
 {
   eversion_t ver;
+  assert(pg->is_primary());
   logger().debug("{} check for recovery, {}", __func__, soid);
   if (!pg->is_unreadable_object(soid, &ver) &&
       !pg->is_degraded_or_backfilling_object(soid)) {
index f15e434f8fd9b18356f2ef3794fdeeadbc692abf..e71804d88ea718f58ff48cf0b1230ff55b376bf4 100644 (file)
@@ -27,6 +27,7 @@ InternalClientRequest::InternalClientRequest(Ref<PG> pg)
   : pg(std::move(pg))
 {
   assert(bool(this->pg));
+  assert(this->pg->is_primary());
 }
 
 InternalClientRequest::~InternalClientRequest()