Skip to content

Commit a9b4eba

Browse files
authored
Merge pull request ceph#61009 from cbodley/wip-69169
rgw/rados: resolve CopyObject crash from remote zonegroup Reviewed-by: Daniel Gryniewicz <[email protected]>
2 parents 1814d6b + ca36171 commit a9b4eba

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/rgw/driver/rados/rgw_rados.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4762,7 +4762,11 @@ int RGWRados::copy_obj(RGWObjectCtx& src_obj_ctx,
47624762

47634763
if (remote_src || !source_zone.empty()) {
47644764
rgw_zone_set_entry source_trace_entry{source_zone.id, std::nullopt};
4765-
const req_context rctx{dpp, y, nullptr};
4765+
// null_yield resolves a crash when calling progress_cb(), because the beast
4766+
// frontend tried to use this same yield context to write the progress
4767+
// response to the frontend socket. call fetch_remote_obj() synchronously so
4768+
// that only one thread tries to suspend that coroutine
4769+
const req_context rctx{dpp, null_yield, nullptr};
47664770
return fetch_remote_obj(dest_obj_ctx, remote_user, info, source_zone,
47674771
dest_obj, src_obj, dest_bucket_info, &src_bucket_info,
47684772
dest_placement, src_mtime, mtime, mod_ptr,

0 commit comments

Comments
 (0)