From 36f5c161c37707e6f3c09dcf4306eca068a93f3b Mon Sep 17 00:00:00 2001 From: Connor Freebairn Date: Wed, 10 Jun 2026 23:33:50 +0100 Subject: [PATCH] Make build task expiration timeout configurable The window for treating a build task as expired was hardcoded to 20 minutes in get_available_build_task. Moved it into a new build_task_expiration_minutes setting (default 20) so deployments can tune how long a task may go without a ping from its build node before it becomes available for a node to pick up again. Fixes: https://github.com/AlmaLinux/build-system/issues/284 --- alws/config.py | 2 ++ alws/crud/build_node.py | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/alws/config.py b/alws/config.py index 4095318d..30297041 100644 --- a/alws/config.py +++ b/alws/config.py @@ -93,6 +93,8 @@ class Settings(BaseSettings): logging_level: Optional[str] = 'INFO' + build_task_expiration_minutes: int = 20 + frontend_baseurl: Annotated[str, Field(validate_default=True)] = ( 'http://localhost:8080' ) diff --git a/alws/crud/build_node.py b/alws/crud/build_node.py index 9d721c58..4f32a0dd 100644 --- a/alws/crud/build_node.py +++ b/alws/crud/build_node.py @@ -44,8 +44,9 @@ async def get_available_build_task( db: AsyncSession, request: build_node_schema.RequestTask, ) -> typing.Optional[models.BuildTask]: - # TODO: here should be config value - ts_expired = datetime.datetime.utcnow() - datetime.timedelta(minutes=20) + ts_expired = datetime.datetime.utcnow() - datetime.timedelta( + minutes=settings.build_task_expiration_minutes + ) exclude_condition = ( sqlalchemy.not_( sqlalchemy.or_(*[