Skip to content

Conversation

@zirain
Copy link
Member

@zirain zirain commented Oct 1, 2025

PR_NUMBERS:

@zirain zirain requested a review from a team as a code owner October 1, 2025 12:09
@zirain zirain mentioned this pull request Oct 1, 2025
11 tasks
@zirain
Copy link
Member Author

zirain commented Oct 1, 2025

wait #7117

arkodg and others added 27 commits October 1, 2025 20:12
* Use Shallow Copy for TypedMeta, ObjectMeta and Spec
which are read only fields during the status update

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
…oyproxy#6987)

~14% improvement in CPU

```
 benchstat old.txt new.txt
goos: darwin
goarch: amd64
pkg: github.com/envoyproxy/gateway/test/gobench
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
                          │   old.txt    │                new.txt                │
                          │    sec/op    │    sec/op     vs base                 │
GatewayAPItoXDS/small-12    4.257m ± ∞ ¹   2.707m ± ∞ ¹        ~ (p=0.700 n=3) ²
GatewayAPItoXDS/medium-12   37.32m ± ∞ ¹   34.76m ± ∞ ¹        ~ (p=1.000 n=3) ²
GatewayAPItoXDS/large-12    409.5m ± ∞ ¹   437.1m ± ∞ ¹        ~ (p=1.000 n=3) ²
geomean                     40.22m         34.52m        -14.17%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

                          │    old.txt    │                new.txt                │
                          │     B/op      │     B/op       vs base                │
GatewayAPItoXDS/small-12    721.7Ki ± ∞ ¹   722.4Ki ± ∞ ¹       ~ (p=0.700 n=3) ²
GatewayAPItoXDS/medium-12   15.63Mi ± ∞ ¹   15.63Mi ± ∞ ¹       ~ (p=0.100 n=3) ²
GatewayAPItoXDS/large-12    151.3Mi ± ∞ ¹   151.3Mi ± ∞ ¹       ~ (p=1.000 n=3) ²
geomean                     11.86Mi         11.86Mi        +0.04%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

                          │   old.txt    │               new.txt                │
                          │  allocs/op   │  allocs/op    vs base                │
GatewayAPItoXDS/small-12    11.70k ± ∞ ¹   11.71k ± ∞ ¹       ~ (p=0.700 n=3) ²
GatewayAPItoXDS/medium-12   257.3k ± ∞ ¹   257.3k ± ∞ ¹       ~ (p=0.700 n=3) ²
GatewayAPItoXDS/large-12    2.467M ± ∞ ¹   2.467M ± ∞ ¹       ~ (p=0.200 n=3) ²
geomean                     195.1k         195.2k        +0.03%
```

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
)

* perf: improve mem allocation in TruncatePolicyAncestors

Relates to envoyproxy#6919

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* lint

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* also sort on ns before name

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

---------

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* perf: reuse route rule metadata

* build it once and pass it in the caller
* also since EG annotations are rare, make
sure to return early and reduce allocations

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
```
                         │   old.txt    │       new.txt       │
                         │    sec/op    │    sec/op     vs base   │
  MergeLabelValuesOld-12   354.6n ± 42%
  MergeLabelValuesNew-12                  131.6n ± 18%

                         │  old.txt   │      new.txt      │
                         │    B/op    │    B/op     vs base   │
  MergeLabelValuesOld-12   640.0 ± 0%
  MergeLabelValuesNew-12                320.0 ± 0%

                         │  old.txt   │      new.txt      │
                         │ allocs/op  │ allocs/op   vs base   │
  MergeLabelValuesOld-12   2.000 ± 0%
  MergeLabelValuesNew-12                1.000 ± 0%
```

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Co-authored-by: Rudrakh Panigrahi <rudrakh97@gmail.com>
Signed-off-by: zirain <zirain2009@gmail.com>
* Reduces calls from O(N) where N is the total number of resources to O(1)

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* reduces heap allocs
* also removes the copyloopvar lint error

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* similar to envoyproxy#6820

```
  BenchmarkBackendRefContext_Old_HTTPBackendRef-12             	 5002508	       239.5 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_HTTPBackendRef-12             	 4764154	       264.1 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_HTTPBackendRef-12             	 4866708	       238.6 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_HTTPBackendRef-12             	 5032014	       243.8 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_HTTPBackendRef-12             	 4935594	       259.5 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_GRPCBackendRef-12             	 4833061	       245.3 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_GRPCBackendRef-12             	 4970496	       252.1 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_GRPCBackendRef-12             	 4517140	       253.2 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_GRPCBackendRef-12             	 4556660	       273.4 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_Old_GRPCBackendRef-12             	 5003169	       244.2 ns/op	     152 B/op	       3 allocs/op
  BenchmarkBackendRefContext_New_HTTPBackendRef-12             	1000000000	         0.2556 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_HTTPBackendRef-12             	1000000000	         0.2495 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_HTTPBackendRef-12             	1000000000	         0.2499 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_HTTPBackendRef-12             	1000000000	         0.2576 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_HTTPBackendRef-12             	1000000000	         0.2556 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_GRPCBackendRef-12             	1000000000	         0.2505 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_GRPCBackendRef-12             	1000000000	         0.2504 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_GRPCBackendRef-12             	1000000000	         0.2591 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_GRPCBackendRef-12             	1000000000	         0.2502 ns/op	       0 B/op	       0 allocs/op
  BenchmarkBackendRefContext_New_GRPCBackendRef-12             	1000000000	         0.2483 ns/op	       0 B/op	       0 allocs/op
  ```

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* use length check instead of a relfect
  `ValueOf(backend.Status).IsZero()` check

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
…tor (envoyproxy#6999)

* only create a new condition when we need to i.e. when it doesnt
  already exist

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
… is applied (envoyproxy#7027)

* Fix weighted cluster generation in RouteAction when URLRewrite filter is applied

Signed-off-by: Sekar Saravanan <sekar.saravanan@jiostar.com>

* XDS translator test added - Fix weighted cluster generation in RouteAction when URLRewrite filter is applied

Signed-off-by: Sekar Saravanan <sekar.saravanan@jiostar.com>

---------

Signed-off-by: Sekar Saravanan <sekar.saravanan@jiostar.com>
Signed-off-by: zirain <zirain2009@gmail.com>
…oyproxy#7002)

* use sds config for credential injector

Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com>

* check for token review status error

Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com>

* use sds config for credential injector

Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
…7024)

Signed-off-by: Rudrakh Panigrahi <rudrakh97@gmail.com>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Co-authored-by: Rudrakh Panigrahi <rudrakh97@gmail.com>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* perf: preallocate slices in route processing

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* use index

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
https://go-critic.com/overview#checkers-from-the-performance-group

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* Use value.Raw directly

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
…#7068)

* fix: preserve route parent statuses during merge

Routes with multiple parent references should maintain status for all
parents, not just the one being currently updated. The mergeRouteParentStatus
function was incorrectly removing parent statuses when they weren't in the
current update batch.

This change preserves all existing parent statuses during the merge operation,
ensuring routes with multiple parents maintain status for all parent refs.

Fixes envoyproxy#7067

Signed-off-by: rajsinghtech <rajsinghcpre@gmail.com>
Signed-off-by: Raj Singh <raj@tailscale.com>

* fix: remove unused controllerName parameter and update tests

- Remove unused controllerName parameter from mergeRouteParentStatus function
- Update test expectations to match the new behavior where all parent
  statuses are preserved during merge operations
- This ensures routes with multiple parent references maintain status
  for all parents, not just the ones being currently updated

Signed-off-by: rajsinghtech <rajsinghcpre@gmail.com>
Signed-off-by: Raj Singh <raj@tailscale.com>
Signed-off-by: zirain <zirain2009@gmail.com>
…7081)

* perf: remove watchable LoadAll() from gateway api runner

* use a keyCache in the gateway-api runner instead of
making an expensive LoadAll() call thats copies all the statuses and IRs
on every subscribe adding a ton of pressure for GC

* use the same mark and sweep operation to clean up the key cache and
  watchable store

* make a one time LoadAll() call in runner Start() to populate the cache
  for the restart runner case (when EnvoyGateway config is updated)

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix tests

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix test

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* rm populateCache, not needed

since we restart runners and reset watchable messages
https://github.com/envoyproxy/gateway/blob/d973842ea2f948a7d6eb2163e8ecc6950b49ae3d/internal/cmd/server.go#L65

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* perf: enable prealloc linter

* and fix all the warnings

Fixes: envoyproxy#7053

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
perf: fix possible mem leak in XDS snapshot

Signed-off-by: Rudrakh Panigrahi <rudrakh97@gmail.com>
Signed-off-by: zirain <zirain2009@gmail.com>
…nvoyproxy#7077)

* perf: direct assign policies in translate result instead of append

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix test

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

---------

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
@zirain zirain force-pushed the cherry-pick/v1.5.2 branch from debd07f to f9f7d46 Compare October 1, 2025 12:12
@codecov
Copy link

codecov bot commented Oct 1, 2025

Codecov Report

❌ Patch coverage is 61.86144% with 545 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.91%. Comparing base (ddc1183) to head (77b8a40).
⚠️ Report is 1 commits behind head on release/v1.5.

Files with missing lines Patch % Lines
internal/gatewayapi/runner/runner.go 38.00% 147 Missing and 8 partials ⚠️
internal/provider/kubernetes/status.go 7.07% 92 Missing ⚠️
internal/gatewayapi/resource/resource.go 7.95% 78 Missing and 3 partials ⚠️
internal/provider/kubernetes/controller.go 56.80% 44 Missing and 10 partials ⚠️
...ternal/troubleshoot/collect/troubleshoot_helper.go 0.00% 42 Missing ⚠️
internal/gatewayapi/status/policy.go 65.82% 18 Missing and 9 partials ⚠️
internal/utils/jsonpatch/patch.go 60.86% 13 Missing and 5 partials ⚠️
internal/gatewayapi/contexts.go 79.68% 8 Missing and 5 partials ⚠️
internal/provider/kubernetes/routes.go 68.75% 3 Missing and 7 partials ⚠️
internal/troubleshoot/collect/custom_resource.go 0.00% 8 Missing ⚠️
... and 17 more
Additional details and impacted files
@@               Coverage Diff                @@
##           release/v1.5    #7118      +/-   ##
================================================
- Coverage         71.02%   70.91%   -0.12%     
================================================
  Files               224      225       +1     
  Lines             39795    40193     +398     
================================================
+ Hits              28264    28501     +237     
- Misses             9863    10011     +148     
- Partials           1668     1681      +13     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Signed-off-by: zirain <zirain2009@gmail.com>
@zirain zirain force-pushed the cherry-pick/v1.5.2 branch from 7348d23 to d60b720 Compare October 1, 2025 15:20
@zirain zirain changed the title [release/v1.5] cherry pick for v1.5.1 [release/v1.5] cherry pick for v1.5.2 Oct 1, 2025
zirain and others added 3 commits October 2, 2025 16:04
Signed-off-by: zirain <zirain2009@gmail.com>
* fix: use maps for backendRefMappings instead of Sets

* Sets compare by value and BackendRef contain multiple ptrs to Kind,
  Group and Namespace, so this Set didnt really serve us any good
  purpose of deduping same backendRefs
* Instead use maps keyed by a util string - NamespaceNameWithGroupKind
similar to what we use for ExtentionRefFilters

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* make key a ptr

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix test

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

---------

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
* bug: disable x-envoy-ratelimited by default

* can be enabled with `enableEnvoyHeaders` in CTP

Relates to envoyproxy#7034

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix tests and release note

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix testdata

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

---------

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
@zirain zirain force-pushed the cherry-pick/v1.5.2 branch from 0c28365 to a88aa0e Compare October 2, 2025 08:04
@zirain
Copy link
Member Author

zirain commented Oct 2, 2025

/retest

arkodg
arkodg previously approved these changes Oct 2, 2025
* fix: use lock when accessing mergeGateways Set

* accessed in multiple goroutines to map proxy fleet to resource via
  labels

Fixes this panic

```
fatal error: concurrent map read and map write

   4 internal/runtime/maps.fatal({0x3b83570?, 0x8b3de58?})
   5     /opt/hostedtoolcache/go/1.24.7/x64/src/runtime/panic.go:1058 +0x18
   6 k8s.io/apimachinery/pkg/util/sets.Set[...[].Has(...)
   7     /home/runner/go/pkg/mod/k8s.io/apimachinery@v0.33.3/pkg/util/sets/set.go:78
   8 github.com/envoyproxy/gateway/internal/provider/kubernetes.(*gatewayAPIReconciler).envoyObjectForGateway.func1({0x8bc2dc8, 0xc0054163f0})
   9     /home/runner/work/gateway/gateway/internal/provider/kubernetes/predicates.go:666 +0x7b
  10 github.com/envoyproxy/gateway/internal/provider/kubernetes.(*gatewayAPIReconciler).envoyObjectForGateway(0xc0018858e8?, {0x8ba6648?, 0xc0009c8b90?}, 0x11?)
  11     /home/runner/work/gateway/gateway/internal/provider/kubernetes/predicates.go:682 +0x5e
  12 github.com/envoyproxy/gateway/internal/provider/kubernetes.(*gatewayAPIReconciler).updateStatusForGateway(0xc000516600, {0x8ba6648, 0xc0009c8b90}, 0xc00541a380)
  13     /home/runner/work/gateway/gateway/internal/provider/kubernetes/status.go:579 +0x5a
  14 github.com/envoyproxy/gateway/internal/provider/kubernetes.(*gatewayAPIReconciler).subscribeAndUpdateStatus.func2.1({{{0xc0096a7e46, 0x7}, {0xc001944cc0, 0x11}}, 0x0, 0xc0052fa690}, 0xc00a582a1     0)
```

Relates to envoyproxy#7115 (comment)

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* lint

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

---------

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: zirain <zirain2009@gmail.com>
@zirain zirain force-pushed the cherry-pick/v1.5.2 branch from 5d5aaaa to 77b8a40 Compare October 3, 2025 00:38
@zirain zirain enabled auto-merge (squash) October 3, 2025 00:40
@zirain zirain merged commit 7e4094b into envoyproxy:release/v1.5 Oct 3, 2025
51 of 55 checks passed
@zirain zirain deleted the cherry-pick/v1.5.2 branch October 3, 2025 02:07
@zirain zirain mentioned this pull request Oct 9, 2025
12 tasks
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.

6 participants