feat: add contentTypes config for BackendTrafficPolicy compression#9522
feat: add contentTypes config for BackendTrafficPolicy compression#9522FAUST-BENCHOU wants to merge 1 commit into
Conversation
✅ Deploy Preview for cerulean-figolla-1f9435 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 792b3a2e8c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: zhoujinyu <2319109590@qq.com>
792b3a2 to
ce22a3a
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ce22a3af01
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| commonConfig.MinContentLength = wrapperspb.UInt32(*compression.MinContentLength) | ||
| } | ||
| if len(compression.ContentTypes) > 0 { | ||
| commonConfig.ContentType = append([]string{}, compression.ContentTypes...) |
There was a problem hiding this comment.
Preserve per-route content type settings
When two HTTPRoutes on the same listener configure the same compressor type with different contentTypes, this listener-wide filter config is created only once: patchHCM skips subsequent filters with the same compressorFilterName, and patchRoute only enables that existing filter. As a result, whichever route is visited first supplies the ContentType list for every route using that compressor, so the other route's policy silently compresses the wrong response types or fails to compress its configured types.
Useful? React with 👍 / 👎.
| // text/css, text/html, text/plain, text/xml. | ||
| // | ||
| // +optional | ||
| ContentTypes []string `json:"contentTypes,omitempty"` |
There was a problem hiding this comment.
Keep contentTypes out of metrics compression unless supported
Adding contentTypes to the shared Compression type also exposes it under EnvoyProxy.spec.telemetry.metrics.prometheus.compression because that field reuses this type, but the bootstrap renderer for Prometheus compression only reads Compression.Type and ignores the new list. EnvoyProxy users can now set an accepted/documented contentTypes value that has no effect; either wire it into internal/xds/bootstrap or avoid exposing this BackendTrafficPolicy-specific option through the shared type.
Useful? React with 👍 / 👎.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9522 +/- ##
==========================================
- Coverage 75.53% 75.51% -0.02%
==========================================
Files 252 252
Lines 41646 41646
==========================================
- Hits 31457 31451 -6
- Misses 8062 8066 +4
- Partials 2127 2129 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
What this PR does / why we need it:
BackendTrafficPolicy compression already supports minContentLength, but there is no way to configure which response Content-Types are eligible for compression. Users who need custom types outside Envoy's defaults currently have to add an EnvoyPatchPolicy on top of the compressor config.
This PR adds an optional contentTypes field on Compression and wires it through IR to the Envoy compressor filter's content_type setting. When unset, Envoy's default content types are unchanged.
Which issue(s) this PR fixes:
Fixes #9511
PR Checklist
git commit -s). See DCO: Sign your work./api), the API was discussed and agreed before the implementation. The API change can be in a separate PR, or in the same PR, but the API must be agreed before implementation. N/A if this PR does not contain API changes.make generate gen-check,make lint, and the unit-test/coverage build pass. (Flaky e2e failures are not considered breakages, butgen-check,lint, and coverage MUST pass.)release-notes/current/<section>/<pr-number>-<slug>.md(seerelease-notes/current/README.mdfor sections and naming). N/A if this PR does not contain non-trivial changes.make gen-checkand committed the result if API/helm charts/modules changed.release-notes/current/breaking_changes/.