From 0ff88e860f78a863623ceaaa25fc33334fec90c9 Mon Sep 17 00:00:00 2001 From: drrtuy Date: Mon, 12 Feb 2024 11:33:24 +0200 Subject: [PATCH] fix(threadpool): MCOL-5645 errenous threadpool Job ctor implictly sets socket shared_ptr to nullptr causing sigabrt when threadpool returns an error (#3125) --- primitives/primproc/primitiveserver.cpp | 2 +- utils/threadpool/fair_threadpool.h | 14 +------------- utils/threadpool/prioritythreadpool.h | 13 ------------- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/primitives/primproc/primitiveserver.cpp b/primitives/primproc/primitiveserver.cpp index 60212baae..c80ea3c2a 100644 --- a/primitives/primproc/primitiveserver.cpp +++ b/primitives/primproc/primitiveserver.cpp @@ -1967,7 +1967,7 @@ struct ReadThread id = fBPPHandler->getUniqueID(sbs, ismHdr->Command); functor.reset(new BPPHandler::Abort(fBPPHandler, sbs)); } - PriorityThreadPool::Job job(uniqueID, stepID, txnId, functor, weight, priority, id); + PriorityThreadPool::Job job(uniqueID, stepID, txnId, functor, outIos, weight, priority, id); OOBProcPool->addJob(job); break; } diff --git a/utils/threadpool/fair_threadpool.h b/utils/threadpool/fair_threadpool.h index 24adb1aed..a3c9bc6b1 100644 --- a/utils/threadpool/fair_threadpool.h +++ b/utils/threadpool/fair_threadpool.h @@ -76,19 +76,7 @@ class FairThreadPool , id_(id) { } - // sock_ is nullptr here. This is kinda dangerous. - Job(const uint32_t uniqueID, const uint32_t stepID, const TransactionIdxT txnIdx, - const boost::shared_ptr& functor, const uint32_t weight = 1, const uint32_t priority = 0, - const uint32_t id = 0) - : uniqueID_(uniqueID) - , stepID_(stepID) - , txnIdx_(txnIdx) - , functor_(functor) - , weight_(weight) - , priority_(priority) - , id_(id) - { - } + uint32_t uniqueID_; uint32_t stepID_; TransactionIdxT txnIdx_; diff --git a/utils/threadpool/prioritythreadpool.h b/utils/threadpool/prioritythreadpool.h index 575c996c0..9f7adc3df 100644 --- a/utils/threadpool/prioritythreadpool.h +++ b/utils/threadpool/prioritythreadpool.h @@ -74,19 +74,6 @@ class PriorityThreadPool , sock(sock) { } - // sock_ is nullptr here. This is kinda dangerous. - Job(const uint32_t uniqueID, const uint32_t stepID, const TransactionIdxT txnIdx, - const boost::shared_ptr& functor, const uint32_t weight = 1, const uint32_t priority = 0, - const uint32_t id = 0) - : functor(functor) - , weight(weight) - , priority(priority) - , id(id) - , stepID(stepID) - , uniqueID(uniqueID) - , sock(nullptr) - { - } boost::shared_ptr functor; uint32_t weight;