Skip to content

fix(windows): preserve containerd URLs and correct Hyper-V runtime paths - #9820

Merged
Tim Wright (timmy-wright) merged 2 commits into
mainfrom
timmy/containerd-fixes
Oct 19, 2026
Merged

Tim Wright (timmy-wright) merged 2 commits into
mainfrom
timmy/containerd-fixes

Conversation

@timmy-wright

@timmy-wright Tim Wright (timmy-wright) commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

Preserves explicitly supplied containerd package URLs on Windows Server 2025 instead of rewriting them to a fixed containerd 2.x version.

Generates Hyper-V runtime handlers under the appropriate CRI plugin: plugins.cri for containerd 1.x and plugins.'io.containerd.cri.v1.runtime' for containerd 2.x. This keeps the handler and options tables consistent with the selected configuration template.

Sets IoRetryTimeoutInSec = 300 in the containerd 2.x default runtime's runhcs options. This replaces infinite stdout/stderr pipe-reconnection retries with a five-minute retry budget after an IO disconnection, such as a containerd restart. The option is documented in the runhcs options definition. It does not change the containerd 1.x template, explicitly named runtime handlers, or debug logging.

Expands Pester coverage for explicit URLs and Hyper-V handlers with both process and Hyper-V default isolation, and isolates generated test configuration under Pester's TestDrive.

Validation and rollout considerations:

  • Focused configuration-generation Pester tests: 7 passed locally under PowerShell on Linux.
  • Rendered containerd 2.x TOML parses for process and Hyper-V default isolation, with the timeout confined to the default runtime.
  • The 300-second value is an initial operational choice, not an upstream-recommended default or a confirmed fix for reservation conflicts. Canary validation of restart recovery and permanently disconnected IO is still required. Retry exhaustion can interrupt output forwarding and lose logs; it is not a general container-cleanup deadline.
  • The timeout applies to newly created shims after the updated configuration is loaded; it does not reconfigure existing shims.

Which issue(s) this PR fixes:

No linked issue.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Windows Unit Test Results

  3 files   18 suites   50s ⏱️
560 tests 560 ✅ 0 💤 0 ❌
563 runs  563 ✅ 0 💤 0 ❌

Results for commit 56ced65.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Static review identified no blocking issues in the focused fixes or regression coverage; tests were not executed.

No open issues 🎉

What changed in this PR

Fixes Windows containerd provisioning to respect explicit package URLs and generate version-appropriate Hyper-V runtime configuration.

Changes:

  • Preserves supplied containerd URLs on Windows Server 2025.
  • Selects the correct CRI plugin path for containerd 1.x and 2.x.
  • Expands regression coverage and isolates generated test files in TestDrive.
File Description
staging/​cse/​windows/​containerdfunc.tests.ps1 Tests both isolation defaults and version-specific runtime paths.
staging/​cse/​windows/​containerdfunc.ps1 Substitutes the appropriate runtime plugin path.
parts/​windows/​windowscsehelper.tests.ps1 Tests preservation of explicit package URLs.
parts/​windows/​windowscsehelper.ps1 Removes Windows Server 2025 URL rewriting.

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 19, 2026 04:30
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
test 0% ❌
windows 27% ❌
staging_cse_windows Package 1 65% ➖
debug 0% ❌
provisioningscripts 2% ❌
parts_windows Package 1 73% ➖
Summary 38% (1645 / 6827) ❌

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
github.com/Azure/agentbaker/aks-node-controller 72% ➖
github.com/Azure/agentbaker/aks-node-controller/common 100% ✔
github.com/Azure/agentbaker/aks-node-controller/helpers 68% ➖
github.com/Azure/agentbaker/aks-node-controller/parser 88% ✔
github.com/Azure/agentbaker/aks-node-controller/pkg/gpu 100% ✔
github.com/Azure/agentbaker/aks-node-controller/pkg/nodeconfigutils 88% ✔
github.com/Azure/agentbaker/aks-node-controller/utils 0% ❌
github.com/Azure/agentbaker/apiserver 24% ❌
github.com/Azure/agentbaker/cmd 0% ❌
github.com/Azure/agentbaker/cmd/starter 0% ❌
github.com/Azure/agentbaker/fuzz/api 0% ❌
github.com/Azure/agentbaker/hotfix/render-nodecustomdata 0% ❌
github.com/Azure/agentbaker/pkg/agent 76% ➖
github.com/Azure/agentbaker/pkg/agent/datamodel 76% ➖
github.com/Azure/agentbaker/pkg/agent/toggles 0% ❌
github.com/Azure/agentbaker/pkg/vhdbuilder/datamodel 87% ✔
Summary 74% (5621 / 7572) ➖

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The finite IO retry timeout can interrupt log forwarding and still requires Windows canary validation of restart recovery and retry exhaustion.

No open issues 🎉

Review effort: Balanced

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
shellspec spec 25% ❌
Summary 25% (3865 / 15529) ❌

@timmy-wright
Tim Wright (timmy-wright) merged commit abcc0c0 into main Oct 19, 2026
49 checks passed
@timmy-wright
Tim Wright (timmy-wright) deleted the timmy/containerd-fixes branch October 19, 2026 22:22
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.

4 participants