Deprecate the Windows legacy process strategy flag
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY selects the process setup the runner used on Windows before 16.10. It stayed in place because the current setup could not terminate a job gracefully when the runner runs as a Windows service, which made this flag the only workaround. That defect is fixed, so the flag no longer protects anything.
- Mark the flag deprecated and set its removal target to 19.8.
- Note the deprecation in the flag description.
- Regenerate
docs/configuration/feature-flags.mdwithmake update_feature_flags_docs.
No behavior change. The flag still works and its default is unchanged, so anyone who sets it today is unaffected until the removal.
Closes #39684 (closed) Part of gitlab-org#23127
Why the flag is no longer needed
Two defects made the default path unusable for a runner started by the Windows Service Control Manager. Both are fixed and released in 19.4:
- #39720 (closed) — a failure to restore the runner console was read as a failed termination, so the job was force-killed while it was already stopping. Fixed in !7275 (merged)
- #39297 (closed) — the control event was never delivered, because a service holds no console. Fixed in !7276 (merged)
#39721 (closed) added coverage for the console-less case, which nothing exercised before.
What the removal will delete
Scoped for the follow-up, untouched here: the legacy branch in helpers/process/killer_windows.go, the legacy short-circuit in setProcessGroup in helpers/process/job_windows.go, UseWindowsLegacyProcessStrategy in CommandOptions, and its plumbing through executors/shell/shell.go and executors/custom/custom.go.