From bec2b22a6897058652a6f0c41ed3c0d67dd2296e Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 9 Feb 2024 13:38:49 -0500 Subject: [PATCH] rgw/datalog: RGWDataChangesLog::add_entry() uses null_yield work around a deadlock under RGWDataChangesLog::add_entry() with multi-object delete by making the push() call synchronous this is a partial revert of d38a69b6e18cb798528d64a2c6c3e439212fe6d2 Fixes: https://tracker.ceph.com/issues/63373 Signed-off-by: Casey Bodley (cherry picked from commit 692c2e4d555dd0afe8db6a40634caf446bbc13a7) --- src/rgw/driver/rados/rgw_datalog.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rgw/driver/rados/rgw_datalog.cc b/src/rgw/driver/rados/rgw_datalog.cc index 7ca37abf684..14994a61535 100644 --- a/src/rgw/driver/rados/rgw_datalog.cc +++ b/src/rgw/driver/rados/rgw_datalog.cc @@ -720,7 +720,8 @@ int RGWDataChangesLog::add_entry(const DoutPrefixProvider *dpp, ldpp_dout(dpp, 20) << "RGWDataChangesLog::add_entry() sending update with now=" << now << " cur_expiration=" << expiration << dendl; auto be = bes->head(); - ret = be->push(dpp, index, now, change.key, std::move(bl), y); + // TODO: pass y once we fix the deadlock from https://tracker.ceph.com/issues/63373 + ret = be->push(dpp, index, now, change.key, std::move(bl), null_yield); now = real_clock::now(); -- 2.39.5