From: Sage Weil Date: Mon, 6 Dec 2021 18:12:50 +0000 (-0500) Subject: osd/OSDMapMapping: fix spurious threadpool timeout errors X-Git-Tag: v15.2.17~98^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F44546%2Fhead;p=ceph.git osd/OSDMapMapping: fix spurious threadpool timeout errors 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 (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() --- diff --git a/src/common/WorkQueue.cc b/src/common/WorkQueue.cc index 93b2aadd8a8..e94af5b0e29 100644 --- a/src/common/WorkQueue.cc +++ b/src/common/WorkQueue.cc @@ -99,7 +99,9 @@ void ThreadPool::worker(WorkThread *wt) 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; diff --git a/src/osd/OSDMapMapping.h b/src/osd/OSDMapMapping.h index 37ec74f6f50..8ca6a439f25 100644 --- a/src/osd/OSDMapMapping.h +++ b/src/osd/OSDMapMapping.h @@ -115,7 +115,11 @@ protected: ParallelPGMapper *m; WQ(ParallelPGMapper *m_, ThreadPool *tp) - : ThreadPool::WorkQueue("ParallelPGMapper::WQ", 0, 0, tp), + : ThreadPool::WorkQueue( + "ParallelPGMapper::WQ", + m_->cct->_conf->threadpool_default_timeout, + 0, + tp), m(m_) {} bool _enqueue(Item *i) override {