Ensure resumed CI jobs return to the correct runner

What does this MR do and why?

When a CI job is suspended (via the suspendable environments feature), the runner preserves the cloud VM state and emits a resume key encoding which runner holds the environment. When the next job is dispatched to resume that environment, any runner matching the job's tags can pick it up — but only the original runner's taskscaler knows about the suspended acquisition. A wrong runner receiving the resume job fails immediately with an unknown acquisition key.

This MR adds an application-level filter to RegisterJobService#runner_matched? that enforces the coupling: a resumed job must return to exactly the runner that suspended it.

Related issue: #596841
Part of epic: gitlab-org#21159


MR acceptance checklist

  • This MR does not require a CHANGELOG entry (internal implementation, no user-facing change)
  • Tests added for new code
  • Documentation updated if needed
Edited by Ashvin Sharma

Merge request reports

Loading