-
Notifications
You must be signed in to change notification settings - Fork 3.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
feat(distributors): Use a pool of worker to push to ingesters. #14245
Conversation
pkg/distributor/distributor.go
Outdated
return services.StartManagerAndAwaitHealthy(ctx, d.subservices) | ||
} | ||
|
||
func (d *Distributor) running(ctx context.Context) error { | ||
defer func() { | ||
close(d.ingesterTasks) |
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.
I am not 100% sure, but I think it might be possible for this to cause a panic 🤔 If we are in the middle of a Distributor.Push()
call when the context gets cancelled, we might close d.ingesterTasks
here right before we try to add to it here:
loki/pkg/distributor/distributor.go
Line 653 in 0738dd0
d.ingesterTasks <- pushIngesterTask{ |
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.
Change a bit the shutdown logic.
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
What this PR does / why we need it:
This introduce a pool to push to ingesters to avoid spawning a new goroutine each time and release go runtime scheduler.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Checklist
CONTRIBUTING.md
guide (required)feat
PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior.docs/sources/setup/upgrade/_index.md
production/helm/loki/Chart.yaml
and updateproduction/helm/loki/CHANGELOG.md
andproduction/helm/loki/README.md
. Example PRdeprecated-config.yaml
anddeleted-config.yaml
files respectively in thetools/deprecated-config-checker
directory. Example PR