On Tue, 20 Oct 2015, yangruifeng.09209@xxxxxxx wrote: > Hi Sage? > > In the following function, we can ensure is_missing(soid) is equal with is_missing(soid, primary_have_version) ? > > int ReplicatedBackend::start_pushes( > const hobject_t &soid, > ObjectContextRef obc, > RPGHandle *h) > { > ... > for (set<pg_shard_t>::iterator i = > ... > if (j->second.is_missing(soid)) { <--------------------------------- > ++pushes; > h->pushes[peer].push_back(PushOp()); > prep_push_to_replica(obc, soid, peer, > &(h->pushes[peer].back()), h->cache_dont_need); > } > ... > } > > In my environment, we got a assert, but no more infomation: > osd/ReplicatedPG.cc: In function 'virtual void ReplicatedPG::on_local_recover(const hobject_t&, const object_stat_sum_t&, const ObjectRecoveryInfo&, ObjectContextRef, ObjectStore::Transaction*)' thread 7fa379c14700 time 2015-08-28 17:56:08.194843 osd/ReplicatedPG.cc: 211: FAILED assert(is_primary()) This looks like http://tracker.ceph.com/issues/13111 I really don't think we should be seeing this assert fail. I would like to see logs before making changes... hopefully this is something you can reproduce with logging? (debug osd= 20, debug ms = 1) Thanks! sage -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html