Yes, I agree. kefu chai <tchaikov@xxxxxxxxx> 于2018年10月11日周四 下午5:25写道: > > On Thu, Oct 11, 2018 at 1:19 PM 韦皓诚 <whc0000001@xxxxxxxxx> wrote: > > > > Hi guys > > Class mClockQueue calls PullPriorityQueue::pull_request in function > > dequeue() . But PullPriorityQueue::pull_request may return a "future" > > value. That means the mclock tag of the request are greater than now, > > so it should be executed in the future instead of now.The mistake is > > that the mClockQueue::dequeue() do not consider about the type of > > return value > > in that case, the returned PullReq is a "future" instead of a "retn", > so ceph_assert() will abort OSD if a "future" is returned. but i agree > with you, probably we need to wait for "crimson::dmclock::get_time() - > pr.getTime()" before retrying. > > > and execute the request immediately. What is more serious is that > > PullPriorityQueue remains the request in queue and it would be > > executed twice in the future. > > > > > > From Weihaocheng > > > > -- > Regards > Kefu Chai