});
}
+ void ObjectContextLoader::notify_on_change(bool is_primary)
+ {
+ for (auto& obc : obc_set_accessing) {
+ obc.interrupt(::crimson::common::actingset_changed(is_primary));
+ }
+ }
+
// explicitly instantiate the used instantiations
template ObjectContextLoader::load_obc_iertr::future<>
ObjectContextLoader::with_head_obc<RWState::RWNONE>(hobject_t,
load_obc_iertr::future<> reload_obc(ObjectContext& obc) const;
+ void notify_on_change(bool is_primary);
+
private:
ShardServices &shard_services;
PGBackend* backend;
void PG::on_change(ceph::os::Transaction &t) {
logger().debug("{} {}:", *this, __func__);
- for (auto& obc : obc_set_accessing) {
- obc.interrupt(::crimson::common::actingset_changed(is_primary()));
- }
+ obc_loader.notify_on_change(is_primary());
recovery_backend->on_peering_interval_change(t);
backend->on_actingset_changed({ is_primary() });
wait_for_active_blocker.unblock();
using with_obc_func_t =
std::function<load_obc_iertr::future<> (ObjectContextRef)>;
- using obc_accessing_list_t = boost::intrusive::list<
- ObjectContext,
- ObjectContext::obc_accessing_option_t>;
- obc_accessing_list_t obc_set_accessing;
-
load_obc_iertr::future<> with_locked_obc(
const hobject_t &hobj,
const OpInfo &op_info,