1
0
Fork 0

cppcheck/Scheduler (#7909)

This commit is contained in:
Lars Maier 2019-01-08 16:39:56 +01:00 committed by Jan
parent 8376fbb3d9
commit 423cf7a8d4
5 changed files with 22 additions and 19 deletions

View File

@ -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(); }

View File

@ -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:

View File

@ -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(); }

View File

@ -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();

View File

@ -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>