]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw/notifications: fetch object state to get size, in rgw_lc.cc
authorMatt Benjamin <mbenjamin@redhat.com>
Thu, 15 Dec 2022 19:55:16 +0000 (14:55 -0500)
committerCasey Bodley <cbodley@redhat.com>
Tue, 11 Apr 2023 13:46:55 +0000 (09:46 -0400)
Failure to call get_obj_state() leaves object size and other members
uninitialized, and appears to result in in lc delete notifications
with 0 for object size.

Fixes: https://tracker.ceph.com/issues/58287
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit b20a66767f782c06258fb0a5551ee45d6dccb91c)

src/rgw/rgw_lc.cc

index 1baa0164dd8a4a56e23b152103faf2b776d837b3..4db8285650361fccba5ada843ef66756c9c7ab26 100644 (file)
@@ -548,6 +548,13 @@ static int remove_expired_obj(
   }
 
   obj = bucket->get_object(obj_key);
+
+  RGWObjState* obj_state{nullptr};
+  ret = obj->get_obj_state(dpp, &obj_state, null_yield, true);
+  if (ret < 0) {
+    return ret;
+  }
+
   std::unique_ptr<rgw::sal::Object::DeleteOp> del_op
     = obj->get_delete_op();
   del_op->params.versioning_status
@@ -578,7 +585,7 @@ static int remove_expired_obj(
       "ERROR: publishing notification failed, with error: " << ret << dendl;
   } else {
     // send request to notification manager
-    (void) notify->publish_commit(dpp, obj->get_obj_size(),
+    (void) notify->publish_commit(dpp, obj_state->size,
                                  ceph::real_clock::now(),
                                  obj->get_attrs()[RGW_ATTR_ETAG].to_str(),
                                  version_id);