Skip to content

Commit

Permalink
rgw/notifications: fetch object state to get size, in rgw_lc.cc
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mattbenjamin committed Dec 16, 2022
1 parent 032aaa1 commit b20a667
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/rgw/rgw_lc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,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
Expand Down Expand Up @@ -582,7 +589,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);
Expand Down

0 comments on commit b20a667

Please sign in to comment.