Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
return with_blocking_future(osd.wait_for_pg(m->get_spg()));
}).then([this, opref](Ref<PG> pgref) {
PG &pg = *pgref;
- if (__builtin_expect(m->get_map_epoch()
- < pg.get_info().history.same_primary_since,
- false)) {
+ if (pg.can_discard_op(*m)) {
return osd.send_incremental_map(conn.get(), m->get_map_epoch());
}
return with_blocking_future(
backend->on_actingset_changed({ is_primary() });
}
+bool PG::can_discard_op(const MOSDOp& m) const {
+ return __builtin_expect(m.get_map_epoch()
+ < peering_state.get_info().history.same_primary_since, false);
+}
+
}
template <typename MsgType>
bool can_discard_replica_op(const MsgType& m) const;
+ bool can_discard_op(const MOSDOp& m) const;
bool is_missing_object(const hobject_t& soid) const {
return peering_state.get_pg_log().get_missing().get_items().count(soid);
}