Skip to content

crimson/.../scrub_events: fix progress lifetime in deep_scan_object#56375

Merged
athanatos merged 1 commit intoceph:mainfrom
athanatos:sjust/wip-64996-deepscrub-crash
Mar 24, 2024
Merged

crimson/.../scrub_events: fix progress lifetime in deep_scan_object#56375
athanatos merged 1 commit intoceph:mainfrom
athanatos:sjust/wip-64996-deepscrub-crash

Conversation

@athanatos
Copy link
Contributor

seastar::repeat may or may not move the passed action after the first invocation, so we can't actually rely on references to variables captured by value being stable. Instead, allocate with std::make_unique and move into a finally lambda.

Fixes: https://tracker.ceph.com/issues/64996

https://pulpito.ceph.com/sjust-2024-03-21_02:35:36-crimson-rados-wip-sjust-crimson-testing-2024-03-20-distro-default-smithi/

Failures unrelated, caused by existing known bugs.

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
  • jenkins test rook e2e

seastar::repeat may or may not move the passed action after the first
invocation, so we can't actually rely on references to variables
captured by value being stable.  Instead, allocate with std::make_unique
and move into a finally lambda.

Fixes: https://tracker.ceph.com/issues/64996
Signed-off-by: Samuel Just <sjust@redhat.com>
@athanatos athanatos requested a review from a team as a code owner March 21, 2024 21:27
@cyx1231st
Copy link
Member

jenkins test make check

return interruptor::repeat(
[FNAME, this, progress = obj_scrub_progress_t(),
&obj, &entry, &pg]() mutable
[FNAME, this, &progress, &obj, &entry, &pg]()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as a follow-up, is it possible to transform the interruptor::repeat() block to a plain loop in C++, now that the coroutine supported is added to crimson?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The next time I make a large enough change here, the whole thing will be a coroutine with normal loops.

@athanatos
Copy link
Contributor Author

jenkins test api

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants