Conversation
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
dc5d43c to
51f613c
Compare
51f613c to
8e478dd
Compare
8e478dd to
2a81380
Compare
kchheda3
left a comment
There was a problem hiding this comment.
Also wondering now do we even need the back-off changes?
coz the version will now not change for same update ?
| assert(r >= 0); | ||
| } | ||
|
|
||
| void FIFO::maybe_backoff(const DoutPrefixProvider* dpp, std::uint64_t tid, |
There was a problem hiding this comment.
this function can be stanalone, doesn't use any variables from Fifo class !
There was a problem hiding this comment.
It uses get_backoff().
We might not, that's why I asked if you could test without it first. But I figured I should write it up just in case we need it for a fallback. |
2a81380 to
cbac99a
Compare
Fix logic error where disjunction was used instead of conjunction. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Part tags make part creation and setting the head non-idempotent, leading to issues where racing RGWs may get confused about the correct tag for a part. (Or worse, potentially have the metadata header hold different value for a part than the part's header.) Consistently only requires that all nodes agree on the number. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Except for the version type, where only versions with the same tag are comparable. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Since we no longer use tags, journal entries are just an operation and a part number. If an entry being added is already in the journal, skip it. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Only increment the version if we make an actual change. Return whether we have changed something or not so the OSD side can skip writing if there's no change. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
We don't really need the overhead and complexity of a multimap. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
First, make `_prepare_new_head` take the new head part number, so two calls racing from the same push will attempt to create the same head. Also remove the neorados FIFO since it doesn't have all the bug fixes in the legacy version and will be rewritten in terms of `async_compose` anyway. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
A racing client may delete the part we're trying to push to. Use `assert_exists()` to check, and re-read metadata if we receive -ENOENT. Fixes: https://tracker.ceph.com/issues/57562 Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
To break livelocks between two clients, increase the number of retries, but pause a random number (up to 100) of milliseconds every ten retries. Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
cbac99a to
af9280d
Compare
|
|
||
| if (update.max_push_part_num()) { | ||
| if (update.max_push_part_num() && | ||
| (max_push_part_num != *update.max_push_part_num())) { |
There was a problem hiding this comment.
just a thought instead of != check we could have
*update.max_push_part_num() > max_push_part_num ??
We have finished our testing without the back-off changes and everything is working fine w.r.t object count/mismatch. |
|
Moving this to wip-57562 |
This is a more thoroughly cleaned up fix for https://tracker.ceph.com/issues/57562
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "pacific"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
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 dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windows