Skip to content

rgw: Backport of issue 57562 to Pacific#49682

Merged
yuriw merged 7 commits intoceph:pacificfrom
adamemerson:wip-58403-pacific
Mar 13, 2023
Merged

rgw: Backport of issue 57562 to Pacific#49682
yuriw merged 7 commits intoceph:pacificfrom
adamemerson:wip-58403-pacific

Conversation

@adamemerson
Copy link
Contributor

@adamemerson adamemerson commented Jan 10, 2023

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

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/58403
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)
Conflicts:
	src/neorados/cls/fifo.cc
	src/neorados/cls/fifo.h
	src/test/cls_fifo/bench_cls_fifo.cc
	src/test/cls_fifo/test_cls_fifo.cc
 - Upstream deleted version has changes not in downstream
	src/cls/fifo/cls_fifo_ops.h
 - Upstream std::
	src/cls/fifo/cls_fifo_types.h
 - Upstream friend operator
 - Upstream std::
	src/rgw/CMakeLists.txt
 - Downstream unneeded library dependency
	src/rgw/cls_fifo_legacy.h
 - Upstream dpp
	src/rgw/cls_fifo_legacy.cc
 - Upstream C++20
 - Upstream dpp

Fixes: https://tracker.ceph.com/issues/58403
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)
Conflicts:
	src/rgw/cls_fifo_legacy.cc
 - Upstream dpp

Fixes: https://tracker.ceph.com/issues/58403
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/58403
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/58403
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
 - Upstream DPP
Fixes: https://tracker.ceph.com/issues/58403
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)
Conflicts:
	src/rgw/cls_fifo_legacy.cc
 - Upstream dpp

Fixes: https://tracker.ceph.com/issues/58403
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
@adamemerson
Copy link
Contributor Author

jenkins test api

@yuriw yuriw merged commit b5c70bf into ceph:pacific Mar 13, 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