We don't care about degraded state, only whether the object is on the
primary so that we can load the object_info_t.
In particular, this avoids problems with backfill, where an object is
not degraded and populated, is then degraded while we backfill to the
target, and then not degraded again, and populate_obc_watchers() is called
a second time.
Fixes: #1903
Signed-off-by: Sage Weil <sage@newdream.net>
map<hobject_t, ObjectContext *>::iterator i = object_contexts.find(oid);
if (i != object_contexts.end()) {
i->second->get();
- populate_obc_watchers(i->second);
for (set<ObjectContext*>::iterator j = i->second->blocking.begin();
j != i->second->blocking.end();
i->second->blocking.erase(j++)) {
{
lock();
dout(10) << "_applied_pushed_object " << *obc << dendl;
+ if (is_primary())
+ populate_obc_watchers(obc);
put_object_context(obc);
unlock();
delete t;