fix(loki.source.heroku): Fix shutdown semantics and consume logs in batches#5804
Conversation
|
TruffleHog Scan Results Summary: Found 5 potential secrets (0 verified, 5 unverified)
Review: Check if unverified secrets are false positives. Ignoring False Positives: This works for files that support line numbers (most source files). After adding the comment, push your changes and the scan will re-run. |
There was a problem hiding this comment.
Pull request overview
Aligns loki.source.heroku’s HTTP server and forwarding behavior with other Loki sources (notably loki.source.api) by switching to batch-based ingestion/forwarding and consistent shutdown semantics.
Changes:
- Refactor Heroku drain implementation to a
HerokuServerthat forwards batches ([]loki.Entry) and supports graceful vs force shutdown. - Update
loki.source.herokucomponent to use sharedloki.Fanoutandsource.ConsumeBatch. - Update tests to use a shared collecting batch receiver helper, and minor cleanup in API server component/test code.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/component/loki/source/heroku/internal/herokutarget/server.go | Replace target with batch-forwarding HerokuServer and add graceful/force shutdown signaling. |
| internal/component/loki/source/heroku/internal/herokutarget/server_test.go | Update tests to new server type + batch receiver helper. |
| internal/component/loki/source/heroku/heroku.go | Switch to loki.Fanout + ConsumeBatch; restart/shutdown now uses Shutdown/ForceShutdown. |
| internal/component/loki/source/heroku/heroku_test.go | Adjust component tests for new server type and shutdown method. |
| internal/component/loki/source/api/internal/lokipush/push_api_server_test.go | Replace local fake batch receiver with shared collecting batch receiver helper. |
| internal/component/loki/source/api/api.go | Minor control-flow simplification when running the embedded server. |
| internal/component/common/loki/receiver.go | Introduce collecting batch receiver helper for tests (new exported type/constructor). |
There was a problem hiding this comment.
Pull request overview
Aligns loki.source.heroku with the shared server/forwarding patterns used by other Loki sources (notably loki.source.api) by forwarding batches of entries via loki.Fanout and using consistent shutdown semantics for graceful reload vs. forced component stop.
Changes:
- Refactors the Heroku drain implementation into a
HerokuServerthat forwards[]loki.Entrybatches and supports gracefulShutdownvs.ForceShutdown. - Switches the
loki.source.herokucomponent’s forwarding loop tosource.ConsumeBatch+loki.Fanout. - Introduces
loki.NewCollectingBatchReceiver()(test helper) and updates server tests to use it.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/component/loki/source/heroku/internal/herokutarget/server.go | Implements batched drain ingestion + shutdown/force-shutdown semantics. |
| internal/component/loki/source/heroku/heroku.go | Uses loki.Fanout and source.ConsumeBatch; updates lifecycle to the new server type. |
| internal/component/common/loki/receiver.go | Adds CollectingBatchReceiver test helper. |
| internal/component/loki/source/heroku/internal/herokutarget/server_test.go | Updates tests to the new server + batch receiver. |
| internal/component/loki/source/heroku/heroku_test.go | Adjusts tests to use Shutdown() and new server type. |
| internal/component/loki/source/api/internal/lokipush/push_api_server_test.go | Replaces local fake batch receiver with shared CollectingBatchReceiver. |
| internal/component/loki/source/api/api.go | Minor Run() error-checking style tweak. |
Comments suppressed due to low confidence (2)
internal/component/loki/source/heroku/internal/herokutarget/server.go:97
- This handler accumulates all entries from the request into a single slice before forwarding. A large/abusive drain request could therefore cause very large allocations and increased GC pressure. Consider imposing a max request size / max entries per request, or flushing incrementally in bounded batches while scanning.
internal/component/loki/source/heroku/heroku.go:131 - This comment still refers to ht.NewHerokuTarget registering metrics, but the code now uses ht.NewHerokuServer. Please update the comment to match the current implementation so future readers understand why a fresh registry is created on restart.
// [ht.NewHerokuTarget] registers new metrics every time it is called. To
// avoid issues with re-registering metrics with the same name, we create a
// new registry for the target every time we create one, and pass it to an
// unchecked collector to bypass uniqueness checking.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
| // CollectingBatchReceiver is a LogsBatchReceiver that will | ||
| // collect all received entries so it can later be inspected. | ||
| // Used in tests. | ||
| type CollectingBatchReceiver struct { |
There was a problem hiding this comment.
Does it make sense to move this in to one of the test packages?
There was a problem hiding this comment.
Yeah maybe, currently I am just preparing to rebuild the pipeline so these should eventually be removed
### Pull Request Details Since #5804 is merged we now have a defined shutdown order of components, where we start from sources. This means that we no longer have to drain into nothing but could forward them to fanout. But I added in some protection in that if we cannot forward within `DefaultDrainTimeout` we will start to discard entries. ### Issue(s) fixed by this Pull Request <!-- Fixes #issue_id --> ### Notes to the Reviewer <!-- Add any relevant notes for the reviewers and testers of this PR. --> ### PR Checklist - [ ] Documentation added - [x] Tests updated - [ ] Config converters updated --------- Co-authored-by: Kyle Eckhart <kgeckhart@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [1.15.0](v1.14.0...v1.15.0) (2026-03-26) ### ⚠ BREAKING CHANGES * **otelcol:** Upgrade to OTel Collector v0.147.0 ([#5784](#5784)) * Renamed undocumented metrics that was previously prefixed with <component_id>_<metric_name> to loki_source_awsfirehose_<metric_name> ### Features 🌟 * **alloy-mixin:** Add filters, groupBy, and multi-select dashboard variables ([#5611](#5611)) ([3ef714e](3ef714e)) * **beyla.ebpf:** Add support for Prometheus native histograms ([#5812](#5812)) ([7d806fb](7d806fb)) * **beyla.ebpf:** Bump Beyla to v3.6 ([#5833](#5833)) ([cd878d5](cd878d5)) * **converters:** Support converting Promtail limits_config ([#5777](#5777)) ([9491385](9491385)) * **database_observability.mysql:** Add filtering of query samples and wait events by minimum duration ([#5678](#5678)) ([5a4d03b](5a4d03b)) * **database_observability.mysql:** Embed prometheus exporter within db-o11y component ([#5711](#5711)) ([88bffb0](88bffb0)) * **database_observability.postgres:** Add configurable limit to `pg_stat_statements` query ([#5639](#5639)) ([0de0a3f](0de0a3f)) * **database_observability.postgres:** Embed prometheus exporter within db-o11y component ([#5714](#5714)) ([9dc2e83](9dc2e83)) * **database_observability:** Add scaffolding for db-o11y integration tests ([#5575](#5575)) ([ca637d8](ca637d8)) * **database_observability:** Promote components to stable ([#5736](#5736)) ([21a9af6](21a9af6)) * Expose Functionality to Handle syslogs with Empty MSG Field ([#5687](#5687)) ([178b1e6](178b1e6)) * **helm:** Allow setting `revisionHistoryLimit` in the helm chart ([#5847](#5847)) ([9713ad4](9713ad4)) * **loki.process:** Support structured metadata as source type of stage.labels for loki.process ([#5055](#5055)) ([eda3152](eda3152)) * **loki.secretfilter:** Add sampling for secretfilter entries ([#5663](#5663)) ([9997802](9997802)) * **loki.source.gcplog:** Add alloy config for MaxOutstandingBytes and MaxOutstandingMessages ([#5760](#5760)) ([c2b9f0b](c2b9f0b)) * **loki.write:** Add loki pipeline latency metric ([#5702](#5702)) ([cc744a1](cc744a1)) * **mixin:** Update loki dashboard ([#5848](#5848)) ([b616d58](b616d58)) * **otelcol.receiver.datadog:** Expose intake proxy and trace_id_cache_size settings ([#5776](#5776)) ([0384ad4](0384ad4)) * **otelcol:** Upgrade to OTel Collector v0.147.0 ([#5784](#5784)) ([a9b5396](a9b5396)) * **prometheus.exporter.cloudwatch:** Use aws-sdk-go-v2 by default ([#5768](#5768)) ([a2f3489](a2f3489)) * **pyroscope.ebpf:** Add comm, pid labels and kernel frame options ([#5769](#5769)) ([4fa7068](4fa7068)) * **pyroscope.ebpf:** Expose OTel eBPF profiler internal metrics to Prometheus ([#5774](#5774)) ([e713392](e713392)) * **pyroscope:** Copy prometheus common/config HTTP client into promhttp2 package ([#5810](#5810)) ([0b31aaa](0b31aaa)) ### Bug Fixes 🐛 * **beyla:** Inject Beyla version into binary via ldflags ([#5735](#5735)) ([71c03ec](71c03ec)) * Correctly handle the deprecated topic field in otelcol.receiver.kafka configuration ([#5726](#5726)) ([538ac75](538ac75)) * **database_observability.mysql:** Ensure result sets are properly closed ([#5893](#5893)) ([f28f91c](f28f91c)) * **database_observability:** Ensure all collectors are properly stopped ([#5796](#5796)) ([6bfa2a7](6bfa2a7)) * **database_observability:** Ensure that `connection_info` metric is only emitted for a given DB instance when it is available ([#5707](#5707)) ([bf0c3dc](bf0c3dc)) * **database_observability:** Solve test flakiness in MySQL and Postgres sample collectors ([#5130](#5130)) ([a7590d1](a7590d1)) * **deps:** Update module github.com/buger/jsonparser to v1.1.2 [SECURITY] ([#5834](#5834)) ([b2fee8a](b2fee8a)) * **deps:** Update module github.com/buger/jsonparser to v1.1.2 [SECURITY] ([#5870](#5870)) ([698b4e7](698b4e7)) * **deps:** Update module google.golang.org/grpc to v1.79.3 [SECURITY] ([#5825](#5825)) ([5cfbcc4](5cfbcc4)) * **deps:** Update module google.golang.org/grpc to v1.79.3 [SECURITY] ([#5871](#5871)) ([259152d](259152d)) * **deps:** Update npm dependencies ([#5876](#5876)) ([f0f6a11](f0f6a11)) * **deps:** Update npm deps across repo to address CVE-2026-26996 and CVE-2026-22029 ([#5872](#5872)) ([df518dd](df518dd)) * **go:** Update build image to go v1.25.8 ([#5832](#5832)) ([f9b3043](f9b3043)) * **go:** Update go to 1.25.8 ([#5844](#5844)) ([534e7db](534e7db)) * Helm: alloy.extraPorts not working with service.type=NodePort [COPY] ([#5892](#5892)) ([162c6f7](162c6f7)) * **loki.enrich:** Use shared loki functions and fix locking ([#5821](#5821)) ([f916c72](f916c72)) * **loki.process:** Multiline no longer pass empty entry if start was flushed ([#5746](#5746)) ([7bdedf1](7bdedf1)) * **loki.process:** Protect against json that does not look like docker json format ([#5761](#5761)) ([0af6eaa](0af6eaa)) * **loki.secretfilter:** Fix bug where entries were being shadow dropped ([#5786](#5786)) ([90243f9](90243f9)) * **loki.source.file:** Fix position tracking when component stops ([#5800](#5800)) ([9762946](9762946)) * **loki.source.file:** Keep positions for compressed files when reading is finished ([#5723](#5723)) ([fb41d0a](fb41d0a)) * **loki.source.gcplog:** Update to pubsub v2 and fix shutdown semantics ([#5713](#5713)) ([e9d9b69](e9d9b69)) * **loki.source.heroku:** Fix shutdown semantics and consume logs in batches ([#5804](#5804)) ([deda452](deda452)) * **loki.write:** Remove noisy log ([#5837](#5837)) ([8e28f35](8e28f35)) * **loki:** Make drain forward entries with fallback timeout ([#5830](#5830)) ([cfbca90](cfbca90)) * **prometheus.scrape:** Update arguments and targets even if `scrape_native_histograms` and `extra_metrics` are updated ([#5787](#5787)) ([dc4cb0a](dc4cb0a)) * **pyroscope.ebpf:** Update opentelemetry-ebpf-profiler ([#5904](#5904)) ([dfaec47](dfaec47)) * Stop components in a deterministic order ([#5613](#5613)) ([00cd371](00cd371)) ### Chores * Use shared source structures for aws firehose ([#5739](#5739)) ([aef19dc](aef19dc)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: grafana-alloybot[bot] <167359181+grafana-alloybot[bot]@users.noreply.github.com>
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [grafana/alloy](https://github.com/grafana/alloy) | minor | `v1.14.2` → `v1.15.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>grafana/alloy (grafana/alloy)</summary> ### [`v1.15.0`](https://github.com/grafana/alloy/releases/tag/v1.15.0) [Compare Source](grafana/alloy@v1.14.2...v1.15.0) ##### ⚠ BREAKING CHANGES - **otelcol:** Upgrade to OTel Collector v0.147.0 ([#​5784](grafana/alloy#5784)) - Renamed undocumented metrics that was previously prefixed with \<component\_id>*\<metric\_name> to loki\_source\_awsfirehose*\<metric\_name> ##### Features 🌟 - **alloy-mixin:** Add filters, groupBy, and multi-select dashboard variables ([#​5611](grafana/alloy#5611)) ([3ef714e](grafana/alloy@3ef714e)) ([@​thampiotr](https://github.com/thampiotr), [@​cursoragent](https://github.com/cursoragent)) - **beyla.ebpf:** Add support for Prometheus native histograms ([#​5812](grafana/alloy#5812)) ([7d806fb](grafana/alloy@7d806fb)) ([@​fstab](https://github.com/fstab)) - **beyla.ebpf:** Bump Beyla to v3.6 ([#​5833](grafana/alloy#5833)) ([cd878d5](grafana/alloy@cd878d5)) ([@​marctc](https://github.com/marctc), [@​tpaschalis](https://github.com/tpaschalis)) - **converters:** Support converting Promtail limits\_config ([#​5777](grafana/alloy#5777)) ([9491385](grafana/alloy@9491385)) ([@​ptodev](https://github.com/ptodev)) - **database\_observability.mysql:** Add filtering of query samples and wait events by minimum duration ([#​5678](grafana/alloy#5678)) ([5a4d03b](grafana/alloy@5a4d03b)) ([@​cristiangreco](https://github.com/cristiangreco), [@​clayton-cornell](https://github.com/clayton-cornell)) - **database\_observability.mysql:** Embed prometheus exporter within db-o11y component ([#​5711](grafana/alloy#5711)) ([88bffb0](grafana/alloy@88bffb0)) ([@​matthewnolf](https://github.com/matthewnolf)) - **database\_observability.postgres:** Add configurable limit to `pg_stat_statements` query ([#​5639](grafana/alloy#5639)) ([0de0a3f](grafana/alloy@0de0a3f)) ([@​cristiangreco](https://github.com/cristiangreco)) - **database\_observability.postgres:** Embed prometheus exporter within db-o11y component ([#​5714](grafana/alloy#5714)) ([9dc2e83](grafana/alloy@9dc2e83)) ([@​matthewnolf](https://github.com/matthewnolf)) - **database\_observability:** Add scaffolding for db-o11y integration tests ([#​5575](grafana/alloy#5575)) ([ca637d8](grafana/alloy@ca637d8)) ([@​matthewnolf](https://github.com/matthewnolf)) - **database\_observability:** Promote components to stable ([#​5736](grafana/alloy#5736)) ([21a9af6](grafana/alloy@21a9af6)) ([@​matthewnolf](https://github.com/matthewnolf), [@​clayton-cornell](https://github.com/clayton-cornell)) - Expose Functionality to Handle syslogs with Empty MSG Field ([#​5687](grafana/alloy#5687)) ([178b1e6](grafana/alloy@178b1e6)) ([@​blewis12](https://github.com/blewis12), [@​clayton-cornell](https://github.com/clayton-cornell), [@​x1unix](https://github.com/x1unix)) - **helm:** Allow setting `revisionHistoryLimit` in the helm chart ([#​5847](grafana/alloy#5847)) ([9713ad4](grafana/alloy@9713ad4)) ([@​hegerdes](https://github.com/hegerdes)) - **loki.process:** Support structured metadata as source type of stage.labels for loki.process ([#​5055](grafana/alloy#5055)) ([eda3152](grafana/alloy@eda3152)) ([@​baurmatt](https://github.com/baurmatt)) - **loki.secretfilter:** Add sampling for secretfilter entries ([#​5663](grafana/alloy#5663)) ([9997802](grafana/alloy@9997802)) ([@​mikefat](https://github.com/mikefat), [@​clayton-cornell](https://github.com/clayton-cornell)) - **loki.source.gcplog:** Add alloy config for MaxOutstandingBytes and MaxOutstandingMessages ([#​5760](grafana/alloy#5760)) ([c2b9f0b](grafana/alloy@c2b9f0b)) ([@​kalleep](https://github.com/kalleep)) - **loki.write:** Add loki pipeline latency metric ([#​5702](grafana/alloy#5702)) ([cc744a1](grafana/alloy@cc744a1)) ([@​kalleep](https://github.com/kalleep), [@​thampiotr](https://github.com/thampiotr)) - **mixin:** Update loki dashboard ([#​5848](grafana/alloy#5848)) ([b616d58](grafana/alloy@b616d58)) ([@​kalleep](https://github.com/kalleep)) - **otelcol.receiver.datadog:** Expose intake proxy and trace\_id\_cache\_size settings ([#​5776](grafana/alloy#5776)) ([0384ad4](grafana/alloy@0384ad4)) ([@​thampiotr](https://github.com/thampiotr)) - **otelcol:** Upgrade to OTel Collector v0.147.0 ([#​5784](grafana/alloy#5784)) ([a9b5396](grafana/alloy@a9b5396)) ([@​kalleep](https://github.com/kalleep), [@​blewis12](https://github.com/blewis12), [@​clayton-cornell](https://github.com/clayton-cornell)) - **prometheus.exporter.cloudwatch:** Use aws-sdk-go-v2 by default ([#​5768](grafana/alloy#5768)) ([a2f3489](grafana/alloy@a2f3489)) ([@​x1unix](https://github.com/x1unix)) - **pyroscope.ebpf:** Add comm, pid labels and kernel frame options ([#​5769](grafana/alloy#5769)) ([4fa7068](grafana/alloy@4fa7068)) ([@​korniltsev-grafanista](https://github.com/korniltsev-grafanista)) - **pyroscope.ebpf:** Expose OTel eBPF profiler internal metrics to Prometheus ([#​5774](grafana/alloy#5774)) ([e713392](grafana/alloy@e713392)) ([@​korniltsev-grafanista-yolo-vibecoder239](https://github.com/korniltsev-grafanista-yolo-vibecoder239), [@​korniltsev-grafanista](https://github.com/korniltsev-grafanista)) - **pyroscope:** Copy prometheus common/config HTTP client into promhttp2 package ([#​5810](grafana/alloy#5810)) ([0b31aaa](grafana/alloy@0b31aaa)) ([@​korniltsev-grafanista](https://github.com/korniltsev-grafanista)) ##### Bug Fixes 🐛 - **beyla:** Inject Beyla version into binary via ldflags ([#​5735](grafana/alloy#5735)) ([71c03ec](grafana/alloy@71c03ec)) ([@​pratik50](https://github.com/pratik50)) - Correctly handle the deprecated topic field in otelcol.receiver.kafka configuration ([#​5726](grafana/alloy#5726)) ([538ac75](grafana/alloy@538ac75)) ([@​thampiotr](https://github.com/thampiotr)) - **database\_observability.mysql:** Ensure result sets are properly closed ([#​5893](grafana/alloy#5893)) ([f28f91c](grafana/alloy@f28f91c)) ([@​cristiangreco](https://github.com/cristiangreco)) - **database\_observability:** Ensure all collectors are properly stopped ([#​5796](grafana/alloy#5796)) ([6bfa2a7](grafana/alloy@6bfa2a7)) ([@​cristiangreco](https://github.com/cristiangreco)) - **database\_observability:** Ensure that `connection_info` metric is only emitted for a given DB instance when it is available ([#​5707](grafana/alloy#5707)) ([bf0c3dc](grafana/alloy@bf0c3dc)) ([@​rgeyer](https://github.com/rgeyer)) - **database\_observability:** Solve test flakiness in MySQL and Postgres sample collectors ([#​5130](grafana/alloy#5130)) ([a7590d1](grafana/alloy@a7590d1)) ([@​gaantunes](https://github.com/gaantunes), [@​cursoragent](https://github.com/cursoragent), [@​cristiangreco](https://github.com/cristiangreco)) - **deps:** Update module github.com/buger/jsonparser to v1.1.2 \[SECURITY] ([#​5834](grafana/alloy#5834)) ([b2fee8a](grafana/alloy@b2fee8a)) - **deps:** Update module github.com/buger/jsonparser to v1.1.2 \[SECURITY] ([#​5870](grafana/alloy#5870)) ([698b4e7](grafana/alloy@698b4e7)) - **deps:** Update module google.golang.org/grpc to v1.79.3 \[SECURITY] ([#​5825](grafana/alloy#5825)) ([5cfbcc4](grafana/alloy@5cfbcc4)) - **deps:** Update module google.golang.org/grpc to v1.79.3 \[SECURITY] ([#​5871](grafana/alloy#5871)) ([259152d](grafana/alloy@259152d)) - **deps:** Update npm dependencies ([#​5876](grafana/alloy#5876)) ([f0f6a11](grafana/alloy@f0f6a11)) - **deps:** Update npm deps across repo to address CVE-2026-26996 and CVE-2026-22029 ([#​5872](grafana/alloy#5872)) ([df518dd](grafana/alloy@df518dd)) ([@​jharvey10](https://github.com/jharvey10)) - **go:** Update build image to go v1.25.8 ([#​5832](grafana/alloy#5832)) ([f9b3043](grafana/alloy@f9b3043)) ([@​kalleep](https://github.com/kalleep), [@​blewis12](https://github.com/blewis12)) - **go:** Update go to 1.25.8 ([#​5844](grafana/alloy#5844)) ([534e7db](grafana/alloy@534e7db)) ([@​kalleep](https://github.com/kalleep)) - Helm: alloy.extraPorts not working with service.type=NodePort \[COPY] ([#​5892](grafana/alloy#5892)) ([162c6f7](grafana/alloy@162c6f7)) ([@​blewis12](https://github.com/blewis12)) - **loki.enrich:** Use shared loki functions and fix locking ([#​5821](grafana/alloy#5821)) ([f916c72](grafana/alloy@f916c72)) ([@​kalleep](https://github.com/kalleep)) - **loki.process:** Multiline no longer pass empty entry if start was flushed ([#​5746](grafana/alloy#5746)) ([7bdedf1](grafana/alloy@7bdedf1)) ([@​kalleep](https://github.com/kalleep), [@​thampiotr](https://github.com/thampiotr)) - **loki.process:** Protect against json that does not look like docker json format ([#​5761](grafana/alloy#5761)) ([0af6eaa](grafana/alloy@0af6eaa)) ([@​kalleep](https://github.com/kalleep)) - **loki.secretfilter:** Fix bug where entries were being shadow dropped ([#​5786](grafana/alloy#5786)) ([90243f9](grafana/alloy@90243f9)) ([@​mikefat](https://github.com/mikefat)) - **loki.source.file:** Fix position tracking when component stops ([#​5800](grafana/alloy#5800)) ([9762946](grafana/alloy@9762946)) ([@​kalleep](https://github.com/kalleep)) - **loki.source.file:** Keep positions for compressed files when reading is finished ([#​5723](grafana/alloy#5723)) ([fb41d0a](grafana/alloy@fb41d0a)) ([@​kalleep](https://github.com/kalleep)) - **loki.source.gcplog:** Update to pubsub v2 and fix shutdown semantics ([#​5713](grafana/alloy#5713)) ([e9d9b69](grafana/alloy@e9d9b69)) ([@​kalleep](https://github.com/kalleep), [@​kgeckhart](https://github.com/kgeckhart)) - **loki.source.heroku:** Fix shutdown semantics and consume logs in batches ([#​5804](grafana/alloy#5804)) ([deda452](grafana/alloy@deda452)) ([@​kalleep](https://github.com/kalleep)) - **loki.write:** Remove noisy log ([#​5837](grafana/alloy#5837)) ([8e28f35](grafana/alloy@8e28f35)) ([@​kalleep](https://github.com/kalleep)) - **loki:** Make drain forward entries with fallback timeout ([#​5830](grafana/alloy#5830)) ([cfbca90](grafana/alloy@cfbca90)) ([@​kalleep](https://github.com/kalleep), [@​kgeckhart](https://github.com/kgeckhart)) - **prometheus.scrape:** Update arguments and targets even if `scrape_native_histograms` and `extra_metrics` are updated ([#​5787](grafana/alloy#5787)) ([dc4cb0a](grafana/alloy@dc4cb0a)) ([@​ptodev](https://github.com/ptodev)) - **pyroscope.ebpf:** Update opentelemetry-ebpf-profiler ([#​5904](grafana/alloy#5904)) ([dfaec47](grafana/alloy@dfaec47)) ([@​korniltsev-grafanista](https://github.com/korniltsev-grafanista)) - Stop components in a deterministic order ([#​5613](grafana/alloy#5613)) ([00cd371](grafana/alloy@00cd371)) ([@​kalleep](https://github.com/kalleep), [@​kgeckhart](https://github.com/kgeckhart)) ##### Chores - Use shared source structures for aws firehose ([#​5739](grafana/alloy#5739)) ([aef19dc](grafana/alloy@aef19dc)) ([@​kalleep](https://github.com/kalleep)) #### Upgrading Read the [release notes] for specific instructions on upgrading from older versions: [release notes]: https://grafana.com/docs/alloy/v1.15/release-notes/ #### Installation Refer to our [installation guide] for how to install Grafana Alloy. [installation guide]: https://grafana.com/docs/alloy/v1.15/get-started/install/ </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDIuMTAiLCJ1cGRhdGVkSW5WZXIiOiI0My4xMDIuMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbIlJlbm92YXRlIEJvdCIsImF1dG9tYXRpb246Ym90LWF1dGhvcmVkIiwiZGVwZW5kZW5jeS10eXBlOjptaW5vciJdfQ==-->
Pull Request Details
This pr change to use the shared
loki.Fanoutandsource.ConsumeBatch. Likeloki.source.apithe server we create now forward batches of entries and implement the same shutdown semantics.When we reload we stop the server and try to wait for in-flight request to finish. When stopping component we abort all in-flight request directly.
Issue(s) fixed by this Pull Request
Part of #5803
Notes to the Reviewer
PR Checklist