// lock both clone's and head's obcs
co_await pg->obc_loader.with_obc<RWState::RWWRITE>(
coid,
- [this](auto head_obc, auto clone_obc) -> ObjectContextLoader::load_obc_iertr::future<> {
- logger().debug("{}: got clone_obc={}", *this, clone_obc->get_oid());
-
- co_await enter_stage<interruptor>(client_pp().process);
-
- logger().debug("{}: processing clone_obc={}", *this, clone_obc->get_oid());
-
- auto txn = co_await remove_or_update(clone_obc, head_obc);
-
- auto [submitted, all_completed] = co_await pg->submit_transaction(
- std::move(clone_obc),
- std::move(txn),
- std::move(osd_op_p),
- std::move(log_entries)
- );
-
- co_await std::move(submitted);
-
- co_await enter_stage<interruptor>(client_pp().wait_repop);
-
- co_await std::move(all_completed);
-
- co_return;
- },
+ std::bind(&SnapTrimObjSubEvent::process_and_submit,
+ this, std::placeholders::_1, std::placeholders::_2),
false
).handle_error_interruptible(
remove_or_update_iertr::pass_further{},