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>
(cherry picked from commit
30ac5e79352839e285ec2eef6d603226d9071db4)
Conflicts:
src/osd/OSDMapMapping.h
Cherry-pick notes:
- Octopus was passing integer 0 as WorkQueue time_t args vs. ceph::timespan::zero()
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", 0, 0, tp),
+ : ThreadPool::WorkQueue<Item>(
+ "ParallelPGMapper::WQ",
+ m_->cct->_conf->threadpool_default_timeout,
+ 0,
+ tp),
m(m_) {}
bool _enqueue(Item *i) override {