loki.source.docker: update to use shared scheduler #5026
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Description
loki.source.dockersuffered from the same issue thatloki.source.filedid where scheduling could take some time for new targets.In this pr I move
Schedulerto source package so I can be reused by both components. With this I also moved "target" into docker package and rename totailer, this tailer now implementsSourceinterface.I also fixed a issue where stopping component could deadlock if nothing was reading from handler chan.
Which issue(s) this PR fixes
Related to: #4729
Notes to the Reviewer
Moved target and metrics from internal package to
tailer.goandmetrics.goand they are no longer exported.Created a shared structure
Fanout, this implements the common pattern to abort send operation if context is canceled.Create shared function
Consumeto run the consume loop that will abort if context is canceled.Create shared function
Drainthat can be used when component is stopped.PR Checklist