Skip to content

Make least request available by default (remove experimental environment variable) #11996

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

Open
atollena opened this issue Apr 4, 2025 · 3 comments

Comments

@atollena
Copy link

atollena commented Apr 4, 2025

Is your feature request related to a problem?

The least request load balancer has been implemented and released behind an environment variable since July 2022 (grpc-java 1.48.0). To my knowledge it has been used in production by spotify for about as long. The last significant change is in https://github.com/grpc/grpc-java/releases/tag/v1.63.0 to fix a race introduced a few versions before.

Describe the solution you'd like

Remove the GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST environment variable, so that least request is always available.

Same issue in Go: grpc/grpc-go#8228

@ejona86
Copy link
Member

ejona86 commented Apr 8, 2025

For gRFCs that aren't planning to have cross-language testing, I think the bar is "someone has actually run it and it seems to work," which would be per-language. That doesn't require production usage. I do believe Spotify is likely to have used it, but I'm not sure we ever got confirmation. You actually using it in Go for a year should be well beyond what is necessary to stabilize it in grpc-go.

However, the gRFC didn't actually specify the qualification for "stable." So I'd like to confirm with Doug/Mark, and both of them are out-of-office this week. So I'll talk to them next week about it.

@atollena
Copy link
Author

atollena commented Apr 9, 2025

Maybe @yannickepstein can comment regarding Spotify usage?

@yannickepstein
Copy link
Contributor

yannickepstein commented Apr 24, 2025

Sorry for the late response. I was out of office.

Maybe @yannickepstein can comment regarding Spotify usage?

We have been running least request for a few high volume services (around 20, but some with significant load) but we are mostly using our internal load balancing algorithm ELS.
We haven't encountered any bugs with the grpc-java implementation of least request after multiple years of using it.

For the most part, least request performed well for us, but we have run into a few edge cases where tail latencies were elevated by least request compared to our internal LB. I don't think this is particularly problematic but just something to be aware of when using the algorithm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants