Skip to content

rgw: Backport of issue 57562 to Quincy#49679

Merged
yuriw merged 7 commits intoceph:quincyfrom
adamemerson:wip-58402-quincy
Feb 21, 2023
Merged

rgw: Backport of issue 57562 to Quincy#49679
yuriw merged 7 commits intoceph:quincyfrom
adamemerson:wip-58402-quincy

Conversation

@adamemerson
Copy link
Contributor

@adamemerson adamemerson commented Jan 9, 2023

Backport of https://tracker.ceph.com/issues/57562 to Quincy

Contribution Guidelines

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows

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>
(cherry picked from commit dae8e78)
Fixes: https://tracker.ceph.com/issues/58402
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>
(cherry picked from commit f89a6d1)
Fixes: https://tracker.ceph.com/issues/58402
Conflicts:
	src/neorados/cls/fifo.h
	src/test/cls_fifo/bench_cls_fifo.cc
 - Upstream deleted version has changes not in downstream
	src/cls/fifo/cls_fifo_types.h
 - Upstream friend operator
	src/rgw/CMakeLists.txt
 - Downstream unneeded library dependency
	src/rgw/cls_fifo_legacy.cc
 - Upstream C++20

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>
(cherry picked from commit ade8909)
Fixes: https://tracker.ceph.com/issues/58402
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>
(cherry picked from commit 32b514c)
Fixes: https://tracker.ceph.com/issues/58402
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>
(cherry picked from commit fcaa45d)
Conflicts:
	src/rgw/cls_fifo_legacy.cc
	src/cls/fifo/cls_fifo_types.h
 - Upstream C++20
 - Have to write our own less-than since upstream uses the Spaceship Operator
Fixes: https://tracker.ceph.com/issues/58402
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>
(cherry picked from commit bf22290)
Conflicts:
	src/rgw/cls_fifo_legacy.cc
 - Upstream C++20
Fixes: https://tracker.ceph.com/issues/58402
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>
(cherry picked from commit 3493e04)
Fixes: https://tracker.ceph.com/issues/58402
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
@yuriw yuriw merged commit 79baad5 into ceph:quincy Feb 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants