Currently, OneDev manages job concurrency at the Executor level. Since an agent can belong to multiple executors, it can be assigned jobs from different executors simultaneously. This bypasses the intended limits and causes the underlying agent to become oversubscribed.
Proposed Solutions:
Per-Agent Concurrency Limit:
Allow setting a concurrency limit directly on the Agent (e.g., Max jobs = 1). Even if the agent is linked to multiple executors, it will strictly run only one job at a time globally.
Agent Tagging Mechanism:
Allow dispatching jobs based on Agent Tags rather than strict executor queues. Jobs specify required tags, and OneDev dispatches them to matching agents while respecting a strict per-agent concurrency limit.
Benefit:
Prevents hardware oversubscription when sharing agents across different job queues.
Problem Statement:
Currently, OneDev manages job concurrency at the Executor level. Since an agent can belong to multiple executors, it can be assigned jobs from different executors simultaneously. This bypasses the intended limits and causes the underlying agent to become oversubscribed.
Proposed Solutions:
Per-Agent Concurrency Limit: Allow setting a concurrency limit directly on the Agent (e.g., Max jobs = 1). Even if the agent is linked to multiple executors, it will strictly run only one job at a time globally.
Agent Tagging Mechanism:
Allow dispatching jobs based on Agent Tags rather than strict executor queues. Jobs specify required tags, and OneDev dispatches them to matching agents while respecting a strict per-agent concurrency limit.
Benefit:
Prevents hardware oversubscription when sharing agents across different job queues.