From: Radoslaw Zarzynski Date: Mon, 23 Sep 2019 17:18:29 +0000 (+0200) Subject: crimson/osd: apply errorator to op-taking PGBackend::getxattr(). X-Git-Tag: v15.1.0~801^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bc4ef4bfed6cc54bd78963e6e0a94d19c4374a97;p=ceph.git crimson/osd: apply errorator to op-taking PGBackend::getxattr(). Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 2303ce075ad51..35b0bfad72e7b 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -149,21 +149,8 @@ PGBackend::_load_ss(const hobject_t& oid) bl.push_back(std::move(bp)); return seastar::make_ready_future( ss_cache.insert(oid, std::make_unique(bl))); -<<<<<<< HEAD - }, - [oid, this] (const auto& e) { - using T = std::decay_t; - if constexpr (std::is_same_v || - std::is_same_v) { - return seastar::make_ready_future( - ss_cache.insert(oid, std::make_unique())); - } else { - static_assert(always_false::value, "non-exhaustive visitor!"); - } - }); -======= - }, ceph::errorator::all_same_way([oid, this] { + }, crimson::errorator::all_same_way([oid, this] { // NOTE: the errors could have been handled by writing just: // `get_attr_errorator::all_same_way(...)`. // however, this way is more explicit and resilient to unexpected @@ -171,7 +158,6 @@ PGBackend::_load_ss(const hobject_t& oid) return seastar::make_ready_future( ss_cache.insert(oid, std::make_unique())); })); ->>>>>>> 72c0b99... crimson/osd: handle attr retrieval errors with all_same_way(). } seastar::future @@ -481,7 +467,7 @@ seastar::future<> PGBackend::setxattr( //ctx->delta_stats.num_wr++; } -seastar::future<> PGBackend::getxattr( +PGBackend::get_attr_errorator::future<> PGBackend::getxattr( const ObjectState& os, OSDOp& osd_op) const { @@ -500,11 +486,7 @@ seastar::future<> PGBackend::getxattr( osd_op.op.xattr.value_len = osd_op.outdata.length(); return seastar::now(); //ctx->delta_stats.num_rd_kb += shift_round_up(osd_op.outdata.length(), 10); - }, crimson::ct_error::enoent::handle([] { - return seastar::make_exception_future<>(crimson::osd::object_not_found{}); - }), crimson::ct_error::enodata::handle([] { - return seastar::make_exception_future<>(crimson::osd::no_message_available{}); - })); + }, get_attr_errorator::pass_further{}); //ctx->delta_stats.num_rd++; } diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h index 2ea325032cbf8..adc0faf5485e6 100644 --- a/src/crimson/osd/pg_backend.h +++ b/src/crimson/osd/pg_backend.h @@ -91,10 +91,10 @@ public: ObjectState& os, const OSDOp& osd_op, ceph::os::Transaction& trans); - seastar::future<> getxattr( + using get_attr_errorator = crimson::os::FuturizedStore::get_attr_errorator; + get_attr_errorator::future<> getxattr( const ObjectState& os, OSDOp& osd_op) const; - using get_attr_errorator = crimson::os::FuturizedStore::get_attr_errorator; get_attr_errorator::future getxattr( const hobject_t& soid, std::string_view key) const;