We were passing a grace of zero seconds to our temporary work queue, which
led to the HeartbeatMap issuing cpu_tp timeout errors to the log. By using
a non-zero grace period we can avoid these. Use the same default grace
we use for the workqueue itself when it goes to sleep.
Fixes: https://tracker.ceph.com/issues/53506
Signed-off-by: Sage Weil <sage@newdream.net>
break;
}
- if (!_pause && !work_queues.empty()) {
+ if (work_queues.empty()) {
+ ldout(cct, 10) << "worker no work queues" << dendl;
+ } else if (!_pause) {
WorkQueue_* wq;
int tries = 2 * work_queues.size();
bool did = false;
ParallelPGMapper *m;
WQ(ParallelPGMapper *m_, ThreadPool *tp)
- : ThreadPool::WorkQueue<Item>("ParallelPGMapper::WQ",
- ceph::timespan::zero(),
- ceph::timespan::zero(),
- tp),
+ : ThreadPool::WorkQueue<Item>(
+ "ParallelPGMapper::WQ",
+ ceph::make_timespan(m_->cct->_conf->threadpool_default_timeout),
+ ceph::timespan::zero(),
+ tp),
m(m_) {}
bool _enqueue(Item *i) override {