rgw: fix PUT on versioned bucket fails with NoSuchKey#38705
rgw: fix PUT on versioned bucket fails with NoSuchKey#38705mkogan1 wants to merge 1 commit intoceph:masterfrom
Conversation
Fixes: https://tracker.ceph.com/issues/48709 Signed-off-by: Mark Kogan <mkogan@redhat.com>
|
submitted teuthology full rgw suite: |
| ldout(store->ctx(), 5) << "failed to get BucketShard object: ret=" << ret << dendl; | ||
| if (ret == -ENOENT) { | ||
| ldout(store->ctx(), 5) << "failed to get BucketShard object: ret=" << ret << ", modifying to " << -ERR_INTERNAL_ERROR << dendl; | ||
| ret = -ERR_INTERNAL_ERROR; |
There was a problem hiding this comment.
change on this path seems sane--nothing has I think happened, so request seems definitely retryable
| int ret = get_bucket_shard(&bs); | ||
| if (ret < 0) { | ||
| ldout(store->ctx(), 5) << "failed to get BucketShard object: ret=" << ret << dendl; | ||
| if (ret == -ENOENT) { |
There was a problem hiding this comment.
less sure about this path; what request are we executing, and what has happened in the current request to this point?
| for (int i = 0; i < NUM_RESHARD_RETRIES; ++i) { | ||
| r = bs->init(pobj->bucket, *pobj, nullptr /* no RGWBucketInfo */); | ||
| if (r < 0) { | ||
| ldout(cct, 5) << "bs.init() returned ret=" << r << dendl; |
There was a problem hiding this comment.
assuming this is the same as RGWRados::Bucket::UpdateIndex::guard_reshard()--but I didn't realize there were two guard_reshard() methods
| bs.init(obj_instance.bucket, obj_instance, nullptr /* no RGWBucketInfo */); | ||
| if (ret < 0) { | ||
| ldout(cct, 5) << "bs.init() returned ret=" << ret << dendl; | ||
| if (ret == -ENOENT) { |
There was a problem hiding this comment.
here again I'm unsure whether to trust that the current request has had no side effect/is safely retryable
| bs.init(obj_instance.bucket, obj_instance, nullptr /* no RGWBucketInfo */); | ||
| if (ret < 0) { | ||
| ldout(cct, 5) << "bs.init() returned ret=" << ret << dendl; | ||
| if (ret == -ENOENT) { |
There was a problem hiding this comment.
ditto here; what has happened to this point, for the current request?
|
this looks valid as a workaround, but i think we're still missing something here once a reshard completes, but when writing versioned objects, there are multiple calls to it sounds like everything under |
|
@cbodley it sounds right in that uses after reshard starts would be uniform? |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
|
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
|
Unstale please |
|
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
|
fixed by
|
Fixes: https://tracker.ceph.com/issues/48709
Signed-off-by: Mark Kogan mkogan@redhat.com
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume tox