-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Change default otlp exporter GRPC load balancer to round robin #10319
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As much as I agree with having round_robin as the default, we try to stick with the default values from the underlying libraries.
@jpkrohling can you explain the reasoning behind that for this specific scenario? Per Tani's issue: pick_first is never the right choice:
gRPC can't change their default because of legacy clients they need to support / the edge cases are much larger. Given that the collector serves to send data to an arbitrary backend, and most destinations being sent to would benefit from more evenly balanced load, I'm not sure why we would stick with a choice that balances load poorly. I would argue that today we are not setting a reasonable default for users. |
The base for the reasoning is that we try to keep our config with the value that would cause the least surprise to our users, and that's typically the default we have from the underlying library. Another example that I prefer a different default is for the Min TLS version, which is (IIRC) 1.2 from Go, but we could have it set to 1.3 by default. That said, I'm open to changing the default value for this, deviating from the underlying library, if we have OKs from maintainers (cc @open-telemetry/collector-maintainers ). |
I would be ok with changing the default and documenting the reasoning for it in the components affected by this change. I think it's desirable for end users that the collector provides defaults that make their experience better. As per the research done in #10298, I think this qualifies. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #10319 +/- ##
==========================================
- Coverage 92.55% 92.39% -0.16%
==========================================
Files 387 387
Lines 18284 18313 +29
==========================================
- Hits 16922 16921 -1
- Misses 1017 1046 +29
- Partials 345 346 +1 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, but I wanted to settle which strategy we want to make the default: @tsloughter suggested random instead. Once we settle that, we are ready to change the default value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please update the configgrpc README with the default and maybe a link to the issue that drove the change
Co-authored-by: Juraci Paixão Kröhling <juraci.github@kroehling.de>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @taniyourstruly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this change, and for persisting in pursuing what you considered the right thing despite my initial reaction.
Description
Updates the default
pick_first
load balancer toround_robin
, which allows for better resource allocation and less chances of throttling data being sent to addresses.Link to tracking issue
Fixes #10298 (has full context of this PR)
Testing
Edited tests to allow round_robin load balancing.