mirror of https://gitee.com/bigwinds/arangodb
cppcheck/Scheduler (#7909)
This commit is contained in:
parent
8376fbb3d9
commit
423cf7a8d4
|
@ -48,7 +48,7 @@ namespace arangodb {
|
|||
|
||||
class SchedulerThread : virtual public Thread {
|
||||
public:
|
||||
SchedulerThread(Scheduler& scheduler)
|
||||
explicit SchedulerThread(Scheduler& scheduler)
|
||||
: Thread("Scheduler"), _scheduler(scheduler) {}
|
||||
~SchedulerThread() { shutdown(); }
|
||||
|
||||
|
@ -58,7 +58,7 @@ class SchedulerThread : virtual public Thread {
|
|||
|
||||
class SchedulerCronThread : public SchedulerThread {
|
||||
public:
|
||||
SchedulerCronThread(Scheduler& scheduler)
|
||||
explicit SchedulerCronThread(Scheduler& scheduler)
|
||||
: Thread("SchedCron"), SchedulerThread(scheduler) {}
|
||||
|
||||
void run() { _scheduler.runCronThread(); }
|
||||
|
|
|
@ -74,7 +74,8 @@ class Scheduler {
|
|||
// Runs the WorkItem immediately
|
||||
void run() { executeWithCancel(false); }
|
||||
|
||||
WorkItem(std::function<void(bool canceled)>&& handler, RequestLane lane, Scheduler* scheduler)
|
||||
explicit WorkItem(std::function<void(bool canceled)>&& handler,
|
||||
RequestLane lane, Scheduler* scheduler)
|
||||
: _handler(std::move(handler)), _lane(lane), _disable(false), _scheduler(scheduler){};
|
||||
|
||||
private:
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace arangodb {
|
|||
|
||||
class SupervisedSchedulerThread : virtual public Thread {
|
||||
public:
|
||||
SupervisedSchedulerThread(SupervisedScheduler& scheduler)
|
||||
explicit SupervisedSchedulerThread(SupervisedScheduler& scheduler)
|
||||
: Thread("Scheduler"), _scheduler(scheduler) {}
|
||||
~SupervisedSchedulerThread() { shutdown(); }
|
||||
|
||||
|
@ -63,14 +63,14 @@ class SupervisedSchedulerThread : virtual public Thread {
|
|||
|
||||
class SupervisedSchedulerManagerThread final : public SupervisedSchedulerThread {
|
||||
public:
|
||||
SupervisedSchedulerManagerThread(SupervisedScheduler& scheduler)
|
||||
explicit SupervisedSchedulerManagerThread(SupervisedScheduler& scheduler)
|
||||
: Thread("SchedMan"), SupervisedSchedulerThread(scheduler) {}
|
||||
void run() override { _scheduler.runSupervisor(); };
|
||||
};
|
||||
|
||||
class SupervisedSchedulerWorkerThread final : public SupervisedSchedulerThread {
|
||||
public:
|
||||
SupervisedSchedulerWorkerThread(SupervisedScheduler& scheduler)
|
||||
explicit SupervisedSchedulerWorkerThread(SupervisedScheduler& scheduler)
|
||||
: Thread("SchedWorker"), SupervisedSchedulerThread(scheduler) {}
|
||||
void run() override { _scheduler.runWorker(); };
|
||||
};
|
||||
|
@ -229,14 +229,13 @@ void SupervisedScheduler::runSupervisor() {
|
|||
startOneThread();
|
||||
}
|
||||
|
||||
uint64_t jobsDone, lastJobsDone = 0, jobsSubmitted, lastJobsSubmitted = 0;
|
||||
uint64_t jobsStallingTick = 0, queueLength, lastQueueLength = 0;
|
||||
uint64_t jobsDequeued;
|
||||
uint64_t lastJobsDone = 0, lastJobsSubmitted = 0;
|
||||
uint64_t jobsStallingTick = 0, lastQueueLength = 0;
|
||||
|
||||
while (!_stopping) {
|
||||
jobsDone = _jobsDone.load(std::memory_order_acquire);
|
||||
jobsSubmitted = _jobsSubmitted.load(std::memory_order_acquire);
|
||||
jobsDequeued = _jobsDequeued.load(std::memory_order_acquire);
|
||||
uint64_t jobsDone = _jobsDone.load(std::memory_order_acquire);
|
||||
uint64_t jobsSubmitted = _jobsSubmitted.load(std::memory_order_acquire);
|
||||
uint64_t jobsDequeued = _jobsDequeued.load(std::memory_order_acquire);
|
||||
|
||||
if (jobsDone == lastJobsDone && (jobsDequeued < jobsSubmitted)) {
|
||||
jobsStallingTick++;
|
||||
|
@ -244,7 +243,7 @@ void SupervisedScheduler::runSupervisor() {
|
|||
jobsStallingTick--;
|
||||
}
|
||||
|
||||
queueLength = jobsSubmitted - jobsDequeued;
|
||||
uint64_t queueLength = jobsSubmitted - jobsDequeued;
|
||||
|
||||
bool doStartOneThread = (((queueLength >= 3 * _numWorker) &&
|
||||
((lastQueueLength + _numWorker) < queueLength)) ||
|
||||
|
@ -423,7 +422,8 @@ SupervisedScheduler::WorkerState::WorkerState(SupervisedScheduler& scheduler)
|
|||
: _queueRetryCount(100),
|
||||
_sleepTimeout_ms(100),
|
||||
_stop(false),
|
||||
_thread(new SupervisedSchedulerWorkerThread(scheduler)) {}
|
||||
_thread(new SupervisedSchedulerWorkerThread(scheduler)),
|
||||
_padding() {}
|
||||
|
||||
bool SupervisedScheduler::WorkerState::start() { return _thread->start(); }
|
||||
|
||||
|
|
|
@ -68,8 +68,10 @@ class SupervisedScheduler : public Scheduler {
|
|||
struct WorkItem {
|
||||
std::function<void()> _handler;
|
||||
|
||||
WorkItem(std::function<void()> const& handler) : _handler(handler) {}
|
||||
WorkItem(std::function<void()>&& handler) : _handler(std::move(handler)) {}
|
||||
explicit WorkItem(std::function<void()> const& handler)
|
||||
: _handler(handler) {}
|
||||
explicit WorkItem(std::function<void()>&& handler)
|
||||
: _handler(std::move(handler)) {}
|
||||
virtual ~WorkItem() {}
|
||||
|
||||
virtual void operator()() { _handler(); }
|
||||
|
@ -117,10 +119,10 @@ class SupervisedScheduler : public Scheduler {
|
|||
std::atomic<bool> _stop, _working;
|
||||
clock::time_point _lastJobStarted;
|
||||
std::unique_ptr<SupervisedSchedulerWorkerThread> _thread;
|
||||
char padding[40];
|
||||
char _padding[40];
|
||||
|
||||
// initialize with harmless defaults: spin once, sleep forever
|
||||
WorkerState(SupervisedScheduler& scheduler);
|
||||
explicit WorkerState(SupervisedScheduler& scheduler);
|
||||
WorkerState(WorkerState&& that);
|
||||
|
||||
bool start();
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
|
||||
#include <sstream>
|
||||
|
||||
#include <openssl/ssl.h>
|
||||
#include <curl/curl.h>
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
#include <rocksdb/convenience.h>
|
||||
#include <rocksdb/version.h>
|
||||
|
|
Loading…
Reference in New Issue