// -------------------------------------------------------
+void ReplicatedPG::populate_obc_watchers(ObjectContext *obc)
+{
+ if (!obc->obs.oi.watchers.empty()) {
+ // populate unconnected_watchers
+ utime_t now = ceph_clock_now(g_ceph_context);
+ for (map<entity_name_t, watch_info_t>::iterator p = obc->obs.oi.watchers.begin();
+ p != obc->obs.oi.watchers.end();
+ p++) {
+ utime_t expire = now;
+ expire += p->second.timeout_seconds;
+ dout(10) << " unconnected watcher " << p->first << " will expire " << expire << dendl;
+ obc->unconnected_watchers[p->first] = expire;
+ }
+ }
+}
+
ReplicatedPG::ObjectContext *ReplicatedPG::get_object_context(const hobject_t& soid,
const object_locator_t& oloc,
obc->obs.oi.decode(bv);
obc->obs.exists = true;
- if (!obc->obs.oi.watchers.empty()) {
- // populate unconnected_watchers
- utime_t now = ceph_clock_now(g_ceph_context);
- for (map<entity_name_t, watch_info_t>::iterator p = obc->obs.oi.watchers.begin();
- p != obc->obs.oi.watchers.end();
- p++) {
- utime_t expire = now;
- expire += p->second.timeout_seconds;
- dout(10) << " unconnected watcher " << p->first << " will expire " << expire << dendl;
- obc->unconnected_watchers[p->first] = expire;
- }
- }
+ populate_obc_watchers(obc);
} else {
obc->obs.exists = false;
}
obc->obs.exists = true;
obc->obs.oi.decode(oibl);
+
+ populate_obc_watchers(obc);
// suck in snapset context?
SnapSetContext *ssc = obc->ssc;
map<hobject_t, ObjectContext*> object_contexts;
map<object_t, SnapSetContext*> snapset_contexts;
+ void populate_obc_watchers(ObjectContext *obc);
+
ObjectContext *lookup_object_context(const hobject_t& soid) {
if (object_contexts.count(soid)) {
ObjectContext *obc = object_contexts[soid];