dout(20) << __func__ << dendl;
hit_set.reset();
hit_set_start_stamp = utime_t();
- hit_set_flushing.clear();
}
void PrimaryLogPG::hit_set_setup()
utime_t now = ceph_clock_now();
hobject_t oid;
- time_t flush_time = 0;
// If any archives are degraded we skip this persist request
// account for the additional entry being added below
hit_set_in_memory_trim(size);
}
- // hold a ref until it is flushed to disk
- hit_set_flushing[new_hset.begin] = hit_set;
- flush_time = new_hset.begin;
-
ObjectContextRef obc = get_object_context(oid, true);
OpContextUPtr ctx = simple_opc_create(obc);
- if (flush_time != 0) {
- PrimaryLogPGRef pg(this);
- ctx->register_on_applied(
- [pg, flush_time]() {
- pg->hit_set_flushing.erase(flush_time);
- });
- }
ctx->at_version = get_next_version();
ctx->updated_hset_history = info.hit_set;
break;
}
- // check if it's still in flight
- if (hit_set_flushing.count(p->begin)) {
- agent_state->add_hit_set(p->begin.sec(), hit_set_flushing[p->begin]);
- continue;
- }
-
hobject_t oid = get_hit_set_archive_object(p->begin, p->end, p->using_gmt);
if (is_unreadable_object(oid)) {
dout(10) << __func__ << " unreadable " << oid << ", waiting" << dendl;
HitSetRef hit_set; ///< currently accumulating HitSet
utime_t hit_set_start_stamp; ///< time the current HitSet started recording
- map<time_t,HitSetRef> hit_set_flushing; ///< currently being written, not yet readable
void hit_set_clear(); ///< discard any HitSet state
void hit_set_setup(); ///< initialize HitSet state