*/
boost::optional<PeeringCtx> rctx;
-public:
/**
* OSDMap state
*/
osdmap_ref = std::move(newmap);
}
- void write_if_dirty(ObjectStore::Transaction& t);
-
void update_heartbeat_peers();
bool proc_replica_info(
pg_shard_t from, const pg_info_t &oinfo, epoch_t send_epoch);
void remove_down_peer_info(const OSDMapRef &osdmap);
- void purge_strays();
- void update_history(const pg_history_t& new_history);
void check_recovery_sources(const OSDMapRef& map);
void set_last_peering_reset();
void check_full_transition(OSDMapRef lastmap, OSDMapRef osdmap);
const vector<int>& newacting, int acting_primary,
ObjectStore::Transaction *t);
void on_new_interval();
- void init_primary_up_acting(
- const vector<int> &newup,
- const vector<int> &newacting,
- int new_up_primary,
- int new_acting_primary);
void clear_recovery_state();
void clear_primary_state();
void check_past_interval_bounds() const;
const pg_info_t &oinfo, const pg_missing_t &omissing,
pg_shard_t fromosd,
PeeringCtx*);
- void discover_all_missing(std::map<int, map<spg_t,pg_query_t> > &query_map);
void build_might_have_unfound();
void log_weirdness();
void activate(
map<int, map<spg_t,pg_query_t> >& query_map,
map<int, vector<pair<pg_notify_t, PastIntervals> > > *activator_map,
PeeringCtx *ctx);
- void share_pg_info();
void rewind_divergent_log(ObjectStore::Transaction& t, eversion_t newhead);
void merge_log(
void update_blocked_by();
void update_calc_stats();
- bool append_log_entries_update_missing(
- const mempool::osd_pglog::list<pg_log_entry_t> &entries,
- ObjectStore::Transaction &t,
- boost::optional<eversion_t> trim_to,
- boost::optional<eversion_t> roll_forward_to);
-
void add_log_entry(const pg_log_entry_t& e, bool applied);
void calc_trim_to();
public:
PeeringState(
CephContext *cct,
+ pg_shard_t pg_whoami,
spg_t spgid,
const PGPool &pool,
OSDMapRef curmap,
log_weirdness();
}
+ void init_primary_up_acting(
+ const vector<int> &newup,
+ const vector<int> &newacting,
+ int new_up_primary,
+ int new_acting_primary);
+
+ void share_pg_info();
void start_split_stats(
const set<spg_t>& childpgs, vector<object_stat_sum_t> *out);
unsigned split_bits,
const pg_merge_meta_t& last_pg_merge_meta);
+ void purge_strays();
+
void update_stats(
std::function<bool(pg_history_t &, pg_stat_t &)> f,
ObjectStore::Transaction *t = nullptr);
void update_hset(const pg_hit_set_history_t &hset_history);
+ void update_history(const pg_history_t& new_history);
std::optional<pg_stat_t> prepare_stats_for_publish(
bool pg_stats_publish_valid,
* Merge entries updating missing as necessary on all
* acting_recovery_backfill logs and missings (also missing_loc)
*/
- void merge_new_log_entries(
+ bool append_log_entries_update_missing(
const mempool::osd_pglog::list<pg_log_entry_t> &entries,
ObjectStore::Transaction &t,
boost::optional<eversion_t> trim_to,
bool transaction_applied,
bool async);
+ void merge_new_log_entries(
+ const mempool::osd_pglog::list<pg_log_entry_t> &entries,
+ ObjectStore::Transaction &t,
+ boost::optional<eversion_t> trim_to,
+ boost::optional<eversion_t> roll_forward_to);
+
void add_local_next_event(const pg_log_entry_t& e) {
pg_log.missing_add_next_entry(e);
}
pg_shard_t peer,
const hobject_t soid);
+ void discover_all_missing(std::map<int, map<spg_t,pg_query_t> > &query_map);
+
void object_recovered(
const hobject_t &hoid,
const object_stat_sum_t &stat_diff) {
pg_log.set_last_requested(v);
}
+ void write_if_dirty(ObjectStore::Transaction& t);
+
void complete_write(eversion_t v, eversion_t lc);
void local_write_applied(eversion_t v) {
last_update_applied = v;