From 8f359724d2b43286fb3b258bb28cec824c0301fc Mon Sep 17 00:00:00 2001 From: Kautilya Tripathi Date: Mon, 16 Feb 2026 12:53:37 +0530 Subject: [PATCH] crimson/osd: fix omap key removal encoding mismatch RGW bucket deletion via cls_user_remove_bucket was failing on Crimson because cls_cxx_map_remove_key() encoded a std::vector while PGBackend::omap_remove_key() expected and decoded a std::set using decode_str_set_to_bl(). This mismatch caused OMAP keys to not be removed, leaving stale bucket entries that broke test_list_buckets_*. Fix by encoding std::set in cls_cxx_map_remove_key() to match the backend's decode_str_set_to_bl() expectation, aligning with classic OSD behavior. This fixes: s3 test_list_buckets_* tests on Crimson Signed-off-by: Kautilya Tripathi --- src/crimson/osd/objclass.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/objclass.cc b/src/crimson/osd/objclass.cc index 88cd9822d0e1..c3b9a67ac937 100644 --- a/src/crimson/osd/objclass.cc +++ b/src/crimson/osd/objclass.cc @@ -436,7 +436,8 @@ int cls_cxx_map_remove_range(cls_method_context_t hctx, int cls_cxx_map_remove_key(cls_method_context_t hctx, const string &key) { OSDOp op{CEPH_OSD_OP_OMAPRMKEYS}; - std::vector to_rm{key}; + std::set to_rm; + to_rm.insert(key); encode(to_rm, op.indata); return execute_osd_op(hctx, op); } -- 2.47.3