Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mimic: rgw: RGWCoroutine::call(nullptr) sets retcode=0 #30159

merged 1 commit into from Oct 8, 2019


Copy link

pdvian commented Sep 5, 2019

callers generally expect 'yield call(...);' to set retcode with the
result of the given coroutine. it's valid to call() a nullptr, but
that's not always clear at the call site - for example, this critical
piece of code in RGWBucketSyncSingleEntryCR::operate():

      if (sync_status == 0) {
        /* update marker */
        set_status() << "calling marker_tracker->finish(" << entry_marker << ")";
        yield call(marker_tracker->finish(entry_marker));
        sync_status = retcode;

marker_tracker->finish() only returns a coroutine when it needs to flush
the marker; otherwise it returns a nullptr. as a result, 'retcode' may
not be assigned as expected by the call(), and a previous value is
mistakenly returned up the stack


Signed-off-by: Casey Bodley <>
(cherry picked from commit 7d12a11)
@tchaikov tchaikov added this to the mimic milestone Sep 5, 2019
@smithfarm smithfarm requested a review from cbodley Sep 7, 2019

This comment has been minimized.

Copy link

yuriw commented Oct 3, 2019

@yuriw yuriw merged commit 74b2f64 into ceph:mimic Oct 8, 2019
4 checks passed
4 checks passed
Docs: build check OK - docs built
Signed-off-by all commits in this PR are signed
Unmodified Submodules submodules for project are unmodified
make check make check succeeded
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
5 participants
You can’t perform that action at this time.