return safe_then_interruptible(std::forward<Args>(args)...);
}
+ auto discard_result() noexcept {
+ return si_then([](auto &&) {});
+ }
template<bool interruptible = true, typename ValueInterruptCondT, typename ErrorVisitorT,
typename U = T, std::enable_if_t<!std::is_void_v<U> && interruptible, int> = 0>
return ctx.tm.remove(
ctx.t,
pin->get_key()
- ).si_then(
- [](auto){},
+ ).discard_result().handle_error_interruptible(
ObjectDataHandler::write_iertr::pass_further{},
crimson::ct_error::assert_all{
"object_data_handler::do_removals invalid error"
crimson::ct_error::assert_all{
"Invalid error in OMapInnerNode helper dec_ref"
}
- ).si_then([](auto &&e) {});
+ ).discard_result();
}
/**
[this, offset, &ptr](auto& t)
{
return tm->remove(t, offset
- ).si_then([](auto){}).handle_error_interruptible(
+ ).discard_result().handle_error_interruptible(
crimson::ct_error::enoent::handle([](auto) { return seastar::now(); }),
crimson::ct_error::pass_further_all{}
).si_then([this, offset, &t, &ptr] {
return cache->mkfs(t);
}).safe_then([this, &ref_t] {
return submit_transaction(std::move(ref_t)
- ).then([](auto p) {});
+ ).discard_result();
});
});
}).handle_error(