Skip to content

Schedule AlmaLinux 10 x86_64 tests only on x86-64-v3 capable workers - #236

Merged
anfimovdm merged 1 commit into
masterfrom
al-el10-x86-64-v3-queue
Oct 27, 2026
Merged

anfimovdm merged 1 commit into
masterfrom
al-el10-x86-64-v3-queue

Conversation

@anfimovdm

Copy link
Copy Markdown
Contributor

Resolves AlmaLinux/build-system#563

Summary

The AlmaLinux 10 linux/amd64 image is built for x86-64-v3. On workers whose CPU doesn't support it, every binary in the container exits with 127: the environment stops right after start_environment and initial_provision fails with Failed to create temporary directory. This adds a way to send AlmaLinux 10 x86_64 tasks only to x86-64-v3 capable workers.

Changes

  • alts/shared/constants.py: new queue architecture x86_64_v3 in ARCHITECTURES, so workers declare docker-x86_64_v3-* and opennebula-x86_64_v3-* queues.
  • alts/shared/models.py:
    • New QueueArchOverride model: dist_name, dist_versions, arch (queue architecture the task would normally go to), queue_arch.
    • arch and queue_arch must be declared queue architectures, so a typo fails at startup instead of leaving tasks in a queue nobody consumes.
    • SchedulerConfig.queue_arch_overrides, empty by default.
  • alts/scheduler/scheduling.py: queue architecture lookup moved to TestsScheduler.get_queue_arch(), which applies the first matching override. Versions match on the full version or its major part, like docker_image_overrides.

Nothing changes without an override in the config. Workers are unaffected: the task still has dist_arch: x86_64, so containers keep using linux/amd64.

Example scheduler config:

queue_arch_overrides:
  - dist_name: almalinux
    dist_versions: ['10']
    arch: x86_64
    queue_arch: x86_64_v3

Rollout

  1. Deploy to the workers and add docker-x86_64_v3-0 to the queues of x86-64-v3 capable ones only.
  2. Check the new queue has a consumer.
  3. Enable the override on the scheduler.

Deployment changes: AlmaLinux/albs-deploy PR (linked in the issue).

Testing

  • New tests/scheduler/test_scheduling.py: major, full and integer versions, i686 mapping to x86_64, x86_64_v2/aarch64/other version/other distro not overridden, no overrides, unknown architecture, rejected undeclared queue_arch.
  • pytest tests/scheduler tests/runners: 27 passed.
  • Full suite locally: everything outside tests/executors passes. The tests/executors failures need SSH to localhost and bats, which the alts_tests container provides; they're unrelated to this change.

The AlmaLinux 10 linux/amd64 image is built for x86-64-v3. On workers whose CPU doesn't support it, every binary in the container exits with 127, so the environment stops right after start and the initial provision fails with a misleading Ansible error.

Add an x86_64_v3 queue architecture and a scheduler setting, queue_arch_overrides, that sends matching tasks to another queue architecture. Only workers subscribed to docker-x86_64_v3-* then get AlmaLinux 10 x86_64 tasks. Both architectures of an override are validated against the declared queues, so a typo fails at startup instead of stranding tasks.

Resolves: AlmaLinux/build-system#563
@anfimovdm anfimovdm self-assigned this Oct 27, 2026
@anfimovdm
anfimovdm merged commit 0da34f7 into master Oct 27, 2026
2 of 3 checks passed
@anfimovdm
anfimovdm deleted the al-el10-x86-64-v3-queue branch October 27, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ALTS: schedule AlmaLinux 10 x86_64 tests only on x86-64-v3 capable workers

1 participant