From d57162350f0ae24c1331ab456be22ac057a2afb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= Date: Tue, 7 Jul 2026 14:38:09 +0200 Subject: [PATCH 1/2] Allow two concurrent tasks on workers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nikola Forró --- openshift/configmap-agents-env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openshift/configmap-agents-env.yml b/openshift/configmap-agents-env.yml index 16d140edd..87de9b8f6 100644 --- a/openshift/configmap-agents-env.yml +++ b/openshift/configmap-agents-env.yml @@ -1,7 +1,7 @@ apiVersion: v1 data: MAX_RETRIES: "3" - MAX_CONCURRENT_TASKS: "1" + MAX_CONCURRENT_TASKS: "2" LOG_BUFFER_SIZE: "0" GIT_REPO_BASEPATH: /git-repos # The maximum number of retries for a single step in the agent execution. From 8bd35c17217ec5e3c9539f21eaf58f7bf099d4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= Date: Tue, 7 Jul 2026 14:50:29 +0200 Subject: [PATCH 2/2] Fix concurrency issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nikola Forró Assisted-by: Claude Opus 4.6 via Claude Code --- ymir/agents/merge_request_agent.py | 4 +--- ymir/agents/rebase_agent.py | 4 +--- ymir/agents/rebuild_agent.py | 4 +--- ymir/agents/tasks.py | 2 +- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/ymir/agents/merge_request_agent.py b/ymir/agents/merge_request_agent.py index 59efbe72f..c584f9cd5 100644 --- a/ymir/agents/merge_request_agent.py +++ b/ymir/agents/merge_request_agent.py @@ -116,8 +116,6 @@ async def main() -> None: dry_run = os.getenv("DRY_RUN", "False").lower() == "true" max_build_attempts = int(os.getenv("MAX_BUILD_ATTEMPTS", "10")) - local_tool_options = {"working_directory": None} - class State(BaseModel): merge_request_url: str local_clone: Path | None = Field(default=None) @@ -137,7 +135,7 @@ class State(BaseModel): all_files_git_to_add: set[str] = Field(default_factory=set) async def run_workflow(merge_request_url): - local_tool_options["working_directory"] = None + local_tool_options = {"working_directory": None} async with mcp_tools(os.environ["MCP_GATEWAY_URL"]) as gateway_tools: merge_request_agent = create_merge_request_agent(gateway_tools, local_tool_options) diff --git a/ymir/agents/rebase_agent.py b/ymir/agents/rebase_agent.py index 419d28d33..48971adb2 100644 --- a/ymir/agents/rebase_agent.py +++ b/ymir/agents/rebase_agent.py @@ -127,8 +127,6 @@ async def main() -> None: dry_run = os.getenv("DRY_RUN", "False").lower() == "true" max_build_attempts = int(os.getenv("MAX_BUILD_ATTEMPTS", "10")) - local_tool_options: dict[str, Any] = {"working_directory": None} - class State(PackageUpdateState): version: str justification: str | None = Field(default=None) @@ -150,7 +148,7 @@ async def run_workflow( redis_conn=None, user_triggered=False, ): - local_tool_options["working_directory"] = None + local_tool_options: dict[str, Any] = {"working_directory": None} if mock_env := get_mock_local_tool_env(jira_issue): local_tool_options["env"] = mock_env diff --git a/ymir/agents/rebuild_agent.py b/ymir/agents/rebuild_agent.py index c73191e36..6319373d7 100644 --- a/ymir/agents/rebuild_agent.py +++ b/ymir/agents/rebuild_agent.py @@ -52,8 +52,6 @@ async def main() -> None: dry_run = os.getenv("DRY_RUN", "False").lower() == "true" - local_tool_options = {"working_directory": None} - class State(PackageUpdateState): rebuild_success: bool = Field(default=False) rebuild_error: str | None = Field(default=None) @@ -78,7 +76,7 @@ async def run_workflow( side_tag=None, user_triggered=False, ): - local_tool_options["working_directory"] = None + local_tool_options = {"working_directory": None} if mock_env := get_mock_local_tool_env(jira_issue): local_tool_options["env"] = mock_env diff --git a/ymir/agents/tasks.py b/ymir/agents/tasks.py index 3caa7d7ba..26a2a5044 100644 --- a/ymir/agents/tasks.py +++ b/ymir/agents/tasks.py @@ -113,7 +113,7 @@ async def prepare_dist_git_from_merge_request( fedora_clone = None if with_fedora: package = details.target_repo_name - fedora_clone = working_dir / f"{package}-fedora" + fedora_clone = working_dir / f"{package}-fedora-{local_clone.name}" if not await _clone_fedora_dist_git(package, fedora_clone): fedora_clone = None return local_clone, details, fedora_clone