Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prepare stable-2.14.2 #11495

Merged
merged 8 commits into from
Oct 26, 2023
Merged

prepare stable-2.14.2 #11495

merged 8 commits into from
Oct 26, 2023

Conversation

hawkw
Copy link
Contributor

@hawkw hawkw commented Oct 17, 2023

This branch contains changes for the stable-2.14.2 release.

  • We should have some vuln backports
  • Queue fix
  • HostPort fix
  • HostPort test (dependency for the 2 former points)

alpeb and others added 2 commits October 17, 2023 10:40
Bump Prometheus to v2.47.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.16.0 to 0.17.0.
- [Commits](golang/net@v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
; Conflicts:
;	go.mod
;	go.sum
@alpeb
Copy link
Member

alpeb commented Oct 18, 2023

This one just popped up, which contains a CVE fix for the go grpc lib: #11496

dependabot bot and others added 5 commits October 18, 2023 09:17
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.58.2 to 1.59.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.58.2...v1.59.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…kup changes (#11334)

Followup to #11328

Implements a new pod watcher, instantiated along the other ones in the Destination server. It also watches on Servers and carries all the logic from ServerWatcher, which has now been decommissioned.

The `CreateAddress()` function has been moved into a function of the PodWatcher, because now we're calling it on every update given the pod associated to an ip:port might change and we need to regenerate the Address object. That function also takes care of capturing opaque protocol info from associated Servers, which is not new and had some logic that was duped in the now defunct ServerWatcher. `getAnnotatedOpaquePorts()` got also moved for similar reasons.

Other things to note about PodWatcher:

- It publishes a new pair of metrics `ip_port_subscribers` and `ip_port_updates` leveraging the framework in `prometheus.go`.
- The complexity in `updatePod()` is due to only send stream updates when there are changes in the pod's readiness, to avoid sending duped messages on every pod lifecycle event.
- 
Finally, endpointProfileTranslator's `endpoint` (*pb.WeightedAddr) not being a static object anymore, the `Update()` function now receives an Address that allows it to rebuild the endpoint on the fly (and so `createEndpoint()` was converted into a method of endpointProfileTranslator).
Followup to #11334 (comment)

This extends the test introduced in #11334 to excercise upgrading a
Server associated to a pod's HostPort, and observing how the stream
updates the OpaqueProtocol field.

Helper functions were refactored a bit to allow retrieving the
l5dCRDClientSet used when building the fake API.
When a grpc client of the destination.Get API initiates a request but then doesn't read off of that stream, the HTTP2 stream flow control window will fill up and eventually exert backpressure on the destination controller.  This manifests as calls to `Send` on the stream blocking.  Since `Send` is called synchronously from the client-go informer callback (by way of the endpoint translator), this blocks the informer callback and prevents all further informer calllbacks from firing.  This causes the destination controller to stop sending updates to any of its clients.

We add a queue in the endpoint translator so that when it gets an update from the informer callback, that update is queued and we avoid potentially blocking the informer callback.  Each endpoint translator spawns a goroutine to process this queue and call `Send`.  If there is not capacity in this queue (e.g. because a client has stopped reading and we are experiencing backpressure) then we terminate the stream.

Signed-off-by: Alex Leong <[email protected]>
Backports:
* Render grpc_status metric label as number by @adleong in #2480
* balance: Log and fail stuck discovery streams. by @olix0r in #2484

Full Changelog: release/v2.203.4...release/v2.203.5

Signed-off-by: Matei David <[email protected]>
@mateiidavid mateiidavid marked this pull request as ready for review October 26, 2023 17:23
@mateiidavid mateiidavid requested a review from a team as a code owner October 26, 2023 17:23
Copy link
Member

@olix0r olix0r left a comment

Choose a reason for hiding this comment

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

We may want to do a merge commit in this case.

@adleong adleong changed the title [DRAFT] prepare stable-2.14.2 prepare stable-2.14.2 Oct 26, 2023
Signed-off-by: Matei David <[email protected]>
@mateiidavid mateiidavid merged commit 48e80cb into release/stable-2.14 Oct 26, 2023
39 checks passed
@mateiidavid mateiidavid deleted the eliza/stable-2.14.2 branch October 26, 2023 19:56
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.

5 participants