Fix: Applications.Core/gateways can hang deploying contour httpproxy route child before root 12259#12282
Open
Conversation
Signed-off-by: Gergo Hortobagyi <[email protected]>
Signed-off-by: Gergo Hortobagyi <[email protected]>
Signed-off-by: Gergo Hortobagyi <[email protected]>
…ing-contour-httpproxy-route-child-before-root--12259
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes a deployment hang when applying Applications.Core/gateways resources backed by Contour by ensuring route-child HTTPProxy resources do not block deployment readiness while still validating readiness for the root HTTPProxy.
Changes:
- Skip readiness waiting for Contour route-child
HTTPProxyresources; continue waiting for root ContourHTTPProxyreadiness. - Add a Contour-aware guard so non-Contour resources with
kind: HTTPProxybypass the Contour waiter entirely. - Add regression tests covering output-resource ordering, route-child detection, and waiter behavior.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/corerp/renderers/gateway/render_test.go | Adds a regression test asserting route-child HTTPProxy output resources are ordered before the root gateway HTTPProxy. |
| pkg/corerp/handlers/kubernetes.go | Updates the Kubernetes handler to only invoke the Contour HTTPProxy waiter for Contour resources, and to skip waits for route-child HTTPProxy resources. |
| pkg/corerp/handlers/kubernetes_test.go | Adds tests verifying route-child HTTPProxy skips waiting, root HTTPProxy still waits, and non-Contour HTTPProxy bypasses the waiter. |
| pkg/corerp/handlers/kubernetes_http_proxy_waiter.go | Introduces Contour HTTPProxy/route-child identification helpers and uses them to avoid validating route-child readiness. |
| pkg/corerp/handlers/kubernetes_http_proxy_waiter_test.go | Adds unit tests for route-child detection and for ensuring root invalid status is still surfaced as an error. |
Signed-off-by: Gergo Hortobagyi <[email protected]>
…ing-contour-httpproxy-route-child-before-root--12259
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This pull request fixes a deployment hang for
Applications.Core/gatewaysthat render ContourHTTPProxyroute-child resources before the root gatewayHTTPProxy.Contour route-child
HTTPProxyresources do not become independently valid until the rootHTTPProxyincludes them, so Radius should not wait for each route child to report readiness immediately after applying it. This change skips readiness waits for Contour route-childHTTPProxyresources while preserving readiness validation for root ContourHTTPProxyresources.The change also adds regression coverage for:
HTTPProxyresources are applied before the rootHTTPProxyHTTPProxyresourcesHTTPProxyresources bypass the readiness waiterHTTPProxyresources still wait for readinessHTTPProxyare not sent through the Contour waiterValidation performed:
applications-rpimage; the deployment completed and all generated ContourHTTPProxyresources becamevalid.go test -count=1 ./pkg/corerp/renderers/gateway ./pkg/corerp/handlers ./pkg/rp/v1make build./pkg/...test sweep with arm64 envtest assetsmake lintType of change
NOTE: This issue was not approved yet, but it is a production level blocker. The related issue: Applications.Core/gateways can hang deploying Contour HTTPProxy route child before root #12259
Fixes: #12259
Contributor checklist
Please verify that the PR meets the following requirements, where applicable:
eng/design-notes/in this repository, if new APIs are being introduced.