Adding in queuing in the daggyd process for more even distribution
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
|
||||
#include <rapidjson/document.h>
|
||||
|
||||
#include <random>
|
||||
#include <condition_variable>
|
||||
#include <deque>
|
||||
|
||||
#include "TaskExecutor.hpp"
|
||||
|
||||
@@ -56,6 +57,7 @@ namespace daggy::executors::task {
|
||||
|
||||
private:
|
||||
void monitor();
|
||||
void dispatchQueuedTasks();
|
||||
|
||||
struct RunningTask
|
||||
{
|
||||
@@ -63,19 +65,32 @@ namespace daggy::executors::task {
|
||||
DAGRunID runID;
|
||||
std::string taskName;
|
||||
std::string runnerURL;
|
||||
uint32_t retries;
|
||||
daggy_runner::Capacity resources;
|
||||
};
|
||||
|
||||
struct QueuedTask
|
||||
{
|
||||
Task task;
|
||||
RunningTask rt;
|
||||
};
|
||||
|
||||
std::mutex queuedGuard_;
|
||||
std::condition_variable queuedCV_;
|
||||
std::deque<QueuedTask> queuedTasks_;
|
||||
|
||||
// Resolves jobs through polling
|
||||
std::atomic<bool> running_;
|
||||
bool promptTask_;
|
||||
std::thread monitorWorker_;
|
||||
std::thread dispatchWorker_;
|
||||
|
||||
struct RunnerCapacity
|
||||
{
|
||||
daggy_runner::Capacity current;
|
||||
daggy_runner::Capacity total;
|
||||
};
|
||||
RunnerCapacity getRunnerCapacity(const std::string &runnerURL);
|
||||
|
||||
std::mutex runnersGuard_;
|
||||
std::unordered_map<std::string, RunnerCapacity> runners_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user