From c3e22f0614883b58a3d84cc5f9df73964670ef24 Mon Sep 17 00:00:00 2001 From: "J. Eric Ivancich" Date: Tue, 6 Oct 2020 12:42:22 -0400 Subject: [PATCH] rgw: fix setting of namespace in ordered and unordered bucket listing The namespace is not always set correctly during bucket listing. This can, for example, cause the listing of incomplete multipart uploads, which are in the _multipart_ namespace, to not paginate correctly, and cause entries to be re-listed. Signed-off-by: J. Eric Ivancich (cherry picked from commit bd6f163f366753e8ec42b85a53334f4bf78916bd) --- src/rgw/rgw_rados.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 48b586608b09d..64697e111c29e 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2440,13 +2440,13 @@ int RGWRados::Bucket::List::list_objects_ordered( // or it will be empty; either way it's OK to copy rgw_obj_key marker_obj(params.marker.name, params.marker.instance, - params.marker.ns); + params.ns.empty() ? params.marker.ns : params.ns); rgw_obj_index_key cur_marker; marker_obj.get_index_key(&cur_marker); rgw_obj_key end_marker_obj(params.end_marker.name, params.end_marker.instance, - params.end_marker.ns); + params.ns.empty() ? params.end_marker.ns : params.ns); rgw_obj_index_key cur_end_marker; end_marker_obj.get_index_key(&cur_end_marker); const bool cur_end_marker_valid = !params.end_marker.empty(); @@ -2671,13 +2671,13 @@ int RGWRados::Bucket::List::list_objects_unordered(int64_t max_p, // or it will be empty; either way it's OK to copy rgw_obj_key marker_obj(params.marker.name, params.marker.instance, - params.marker.ns); + params.ns.empty() ? params.marker.ns : params.ns); rgw_obj_index_key cur_marker; marker_obj.get_index_key(&cur_marker); rgw_obj_key end_marker_obj(params.end_marker.name, params.end_marker.instance, - params.end_marker.ns); + params.ns.empty() ? params.end_marker.ns : params.ns); rgw_obj_index_key cur_end_marker; end_marker_obj.get_index_key(&cur_end_marker); const bool cur_end_marker_valid = !params.end_marker.empty(); -- 2.39.5