From: licc Date: Tue, 7 Feb 2023 08:02:19 +0000 (+0100) Subject: rgw: RGWSI_RADOS::Pool::List::init() catches IoCtx::nobjects_begin() exceptions X-Git-Tag: v17.2.8~136^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=59f6bad8ad65b39f32b56c1b427df5799131c34a;p=ceph.git rgw: RGWSI_RADOS::Pool::List::init() catches IoCtx::nobjects_begin() exceptions Signed-off-by: lichaochao (cherry picked from commit 63c7d2a44b421cb95bb62ec3db9b2ff84e72d059) --- diff --git a/src/rgw/services/svc_rados.cc b/src/rgw/services/svc_rados.cc index 1617a2ec6c611..9cc22762eb6fc 100644 --- a/src/rgw/services/svc_rados.cc +++ b/src/rgw/services/svc_rados.cc @@ -329,11 +329,21 @@ int RGWSI_RADOS::Pool::List::init(const DoutPrefixProvider *dpp, const string& m return -EINVAL; } - ctx.iter = ctx.ioctx.nobjects_begin(oc); - ctx.filter = filter; - ctx.initialized = true; - - return 0; + try { + ctx.iter = ctx.ioctx.nobjects_begin(oc); + ctx.filter = filter; + ctx.initialized = true; + return 0; + } catch (const std::system_error& e) { + r = -e.code().value(); + ldpp_dout(dpp, 10) << "nobjects_begin threw " << e.what() + << ", returning " << r << dendl; + return r; + } catch (const std::exception& e) { + ldpp_dout(dpp, 10) << "nobjects_begin threw " << e.what() + << ", returning -5" << dendl; + return -EIO; + } } int RGWSI_RADOS::Pool::List::get_next(const DoutPrefixProvider *dpp,