Making DaggyTaskRunner block until a runner is available

This commit is contained in:
Ian Roddis
2022-01-28 14:18:01 -04:00
parent cbd493ec38
commit 5af8deabec
4 changed files with 49 additions and 108 deletions

View File

@@ -57,7 +57,6 @@ namespace daggy::executors::task {
private:
void monitor();
void dispatchQueuedTasks();
struct RunningTask
{
@@ -68,31 +67,16 @@ namespace daggy::executors::task {
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);
daggy_runner::Capacity getRunnerCapacity(const std::string &runnerURL);
std::mutex runnersGuard_;
std::unordered_map<std::string, RunnerCapacity> runners_;
std::condition_variable runnersCV_;
std::unordered_map<std::string, daggy_runner::Capacity> runners_;
std::mutex rtGuard_;
std::unordered_map<std::pair<DAGRunID, std::string>, RunningTask>