sdata->sdata_op_ordering_lock.Lock();
if (sdata->pqueue->empty()) {
dout(20) << __func__ << " empty q, waiting" << dendl;
- // optimistically sleep a moment; maybe another work item will come along.
- osd->cct->get_heartbeat_map()->reset_timeout(hb,
- osd->cct->_conf->threadpool_default_timeout, 0);
+ osd->cct->get_heartbeat_map()->clear_timeout(hb);
sdata->sdata_lock.Lock();
sdata->sdata_op_ordering_lock.Unlock();
- sdata->sdata_cond.WaitInterval(sdata->sdata_lock,
- utime_t(osd->cct->_conf->threadpool_empty_queue_max_wait, 0));
+ sdata->sdata_cond.Wait(sdata->sdata_lock);
sdata->sdata_lock.Unlock();
sdata->sdata_op_ordering_lock.Lock();
if (sdata->pqueue->empty()) {
sdata->sdata_op_ordering_lock.Unlock();
return;
}
+ osd->cct->get_heartbeat_map()->reset_timeout(hb,
+ osd->cct->_conf->threadpool_default_timeout, 0);
}
OpQueueItem item = sdata->pqueue->dequeue();
if (osd->is_stopping()) {