});
}
-seastar::future<ceph::bufferlist> AlienStore::omap_get_header(
- CollectionRef ch,
- const ghobject_t& oid)
+auto AlienStore::omap_get_header(CollectionRef ch,
+ const ghobject_t& oid)
+ -> read_errorator::future<ceph::bufferlist>
{
return seastar::do_with(ceph::bufferlist(), [=](auto& bl) {
return tp->submit([=, &bl] {
auto c = static_cast<AlienCollection*>(ch.get());
return store->omap_get_header(c->collection, oid, &bl);
- }).then([&bl] (int i) {
- return seastar::make_ready_future<ceph::bufferlist>(std::move(bl));
+ }).then([&bl] (int r) -> read_errorator::future<ceph::bufferlist> {
+ if (r == -ENOENT) {
+ return crimson::ct_error::enoent::make();
+ } else if (r < 0) {
+ logger().error("omap_get_header: {}", r);
+ return crimson::ct_error::input_output_error::make();
+ } else {
+ return read_errorator::make_ready_future<ceph::bufferlist>(std::move(bl));
+ }
});
});
}
seastar::future<struct stat> stat(
CollectionRef,
const ghobject_t&) final;
- seastar::future<ceph::bufferlist> omap_get_header(
+ read_errorator::future<ceph::bufferlist> omap_get_header(
CollectionRef,
const ghobject_t&) final;
seastar::future<std::map<uint64_t, uint64_t>> fiemap(
std::make_tuple(true, std::move(values)));
}
-seastar::future<ceph::bufferlist>
-CyanStore::omap_get_header(
- CollectionRef ch,
- const ghobject_t& oid
- ) {
+auto
+CyanStore::omap_get_header(CollectionRef ch,
+ const ghobject_t& oid)
+ -> read_errorator::future<ceph::bufferlist>
+{
auto c = static_cast<Collection*>(ch.get());
auto o = c->get_object(oid);
if (!o) {
- throw std::runtime_error(fmt::format("object does not exist: {}", oid));
+ return crimson::ct_error::enoent::make();
}
- return seastar::make_ready_future<ceph::bufferlist>(o->omap_header);
+ return read_errorator::make_ready_future<ceph::bufferlist>(
+ o->omap_header);
}
seastar::future<> CyanStore::do_transaction(CollectionRef ch,
const ghobject_t& end,
uint64_t limit) const final;
- seastar::future<ceph::bufferlist> omap_get_header(
+ read_errorator::future<ceph::bufferlist> omap_get_header(
CollectionRef c,
const ghobject_t& oid) final;
const std::optional<std::string> &start ///< [in] start, empty for begin
) = 0; ///< @return <done, values> values.empty() iff done
- virtual seastar::future<bufferlist> omap_get_header(
+ virtual read_errorator::future<bufferlist> omap_get_header(
CollectionRef c,
const ghobject_t& oid) = 0;
return seastar::make_ready_future<struct stat>(st);
}
-seastar::future<ceph::bufferlist> omap_get_header(
+auto
+SeaStore::omap_get_header(
CollectionRef c,
const ghobject_t& oid)
+ -> read_errorator::future<bufferlist>
{
return seastar::make_ready_future<bufferlist>();
}
const std::optional<std::string> &start ///< [in] start, empty for begin
) final; ///< @return <done, values> values.empty() iff done
- seastar::future<bufferlist> omap_get_header(
+ read_errorator::future<bufferlist> omap_get_header(
CollectionRef c,
const ghobject_t& oid) final;
}
}
-seastar::future<ceph::bufferlist> PGBackend::omap_get_header(
+PGBackend::ll_read_errorator::future<ceph::bufferlist>
+PGBackend::omap_get_header(
const crimson::os::CollectionRef& c,
const ghobject_t& oid) const
{
return store->omap_get_header(c, oid);
}
-seastar::future<> PGBackend::omap_get_header(
+PGBackend::ll_read_errorator::future<>
+PGBackend::omap_get_header(
const ObjectState& os,
OSDOp& osd_op) const
{
- return omap_get_header(coll, ghobject_t{os.oi.soid}).then(
+ return omap_get_header(coll, ghobject_t{os.oi.soid}).safe_then(
[&osd_op] (ceph::bufferlist&& header) {
osd_op.outdata = std::move(header);
return seastar::now();
OSDOp& osd_op,
ceph::os::Transaction& trans,
osd_op_params_t& osd_op_params);
- seastar::future<ceph::bufferlist> omap_get_header(
+ ll_read_errorator::future<ceph::bufferlist> omap_get_header(
const crimson::os::CollectionRef& c,
const ghobject_t& oid) const;
- seastar::future<> omap_get_header(
+ ll_read_errorator::future<> omap_get_header(
const ObjectState& os,
OSDOp& osd_op) const;
seastar::future<> omap_set_header(
return [this, &recovery_info, &progress, &new_progress, &oi, &v, pop=&pop] {
v = recovery_info.version;
if (progress.first) {
- return backend->omap_get_header(coll, ghobject_t(recovery_info.soid))
- .then([this, &recovery_info, pop](auto bl) {
+ return backend->omap_get_header(coll, ghobject_t(recovery_info.soid)).safe_then(
+ [this, &recovery_info, pop](auto bl) {
pop->omap_header.claim_append(bl);
return store->get_attrs(coll, ghobject_t(recovery_info.soid));
}).safe_then([&oi, pop, &new_progress, &v](auto attrs) mutable {
v = oi.version;
}
return seastar::make_ready_future<>();
- }, crimson::os::FuturizedStore::get_attrs_ertr::all_same_way(
+ }, crimson::os::FuturizedStore::read_errorator::all_same_way(
[] (const std::error_code& e) {
return seastar::make_exception_future<>(e);
})