chore: remove remaining app ingester config - #6667
Conversation
|
@codex review |
|
Codex couldn't complete this request. Try again later. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 28fb90eab1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| func (c *Config) CheckConfig() []ConfigWarning { | ||
| var warnings []ConfigWarning | ||
| if c.Ingester.CompleteBlockTimeout < c.StorageConfig.Trace.BlocklistPoll { | ||
| warnings = append(warnings, warnCompleteBlockTimeout) | ||
| } | ||
|
|
||
| if c.BackendWorker.Compactor.BlockRetention < c.StorageConfig.Trace.BlocklistPoll { | ||
| warnings = append(warnings, warnBlockRetention) |
There was a problem hiding this comment.
Warn when live-store timeout is below blocklist poll
CheckConfig() no longer emits any warning for complete_block_timeout versus storage.trace.blocklist_poll, but the same stale-blocklist gap still exists with the live-store path (flushed data is evicted after live_store.complete_block_timeout while queriers can still be on an older blocklist), so operators can now ship a misconfiguration that causes transient 404s without any startup warning; this check should be retained against the live-store setting instead of being removed entirely.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Very good catch
|
|
||
|
|
||
| ### 3.0 Cleanup | ||
| * [CHANGE] **BREAKING CHANGE** Remove remaining app ingester config [#6667](https://github.com/grafana/tempo/pull/6667) (@javiermolinar) |
There was a problem hiding this comment.
Should be after the blank line
| "github.com/grafana/tempo/modules/frontend" | ||
| "github.com/grafana/tempo/modules/generator" | ||
| "github.com/grafana/tempo/modules/ingester" | ||
| ingester_client "github.com/grafana/tempo/modules/ingester/client" |
There was a problem hiding this comment.
No calls to this package left. What do you think about removing it too?
There was a problem hiding this comment.
If we delete it, we can delete tempopb.PusherClient I think
There was a problem hiding this comment.
Wow nice finding. But I want do it in a different pr since it involves delete a lot of code
There was a problem hiding this comment.
Pull request overview
This PR completes the removal of the legacy ingester configuration surface area and ingester write-path code, updating Tempo’s wiring, dashboards, examples, and documentation to align with the live-store + Kafka-based write path.
Changes:
- Removes distributor → ingester write path code/config and related metrics, along with associated unit tests and validation.
- Updates Tempo mixin dashboards/config and multiple deployment examples to replace
ingesterreferences withlive-store. - Updates generated configuration manifest and docs to reflect removal of ingester/ingester-client configuration.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/docsgen/generate_manifest.go | Stops overriding ingester lifecycler defaults; ensures live-store defaults are used in generated manifest. |
| operations/tempo-mixin/dashboards/tempo-writes.libsonnet | Removes panel query for distributor→ingester append failures. |
| operations/tempo-mixin/dashboards/rollout-progress.libsonnet | Updates rollout service regex to use live-store instead of ingester. |
| operations/tempo-mixin/config.libsonnet | Removes ingester job matcher from mixin config. |
| operations/tempo-mixin-compiled/dashboards/tempo-writes.json | Compiled dashboard update matching the libsonnet change. |
| operations/tempo-mixin-compiled/dashboards/tempo-rollout-progress.json | Compiled dashboard update matching the libsonnet change. |
| modules/distributor/receiver/shim.go | Updates metric help text to reflect distributor routing semantics. |
| modules/distributor/distributor_test.go | Removes ingester write-path tests/mocks and adapts helpers to new distributor constructor. |
| modules/distributor/distributor.go | Removes ingester write path (pool/ring/client) and switches Kafka timeout source. |
| modules/distributor/config.go | Removes deprecated ingester/kafka write-path toggles and ingester client factory hooks. |
| integration/util/config-base.yaml | Removes deprecated distributor toggles and ingester_client timeout block. |
| example/tk/tempo-microservices/main.jsonnet | Removes ingester component config overrides; keeps live-store. |
| example/tk/readme.md | Updates override example from ingester+ to live_store+. |
| example/nomad/tempo-distributed/tempo.hcl | Replaces ingester group with live-store and normalizes file formatting. |
| example/nomad/tempo-distributed/config.yml | Replaces ingester config with live-store + ingest config for Kafka write path. |
| example/docker-compose/single-binary/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/multitenant/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/distributed/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/debug/tempo.yaml | Removes deprecated distributor write-path toggles. |
| docs/sources/tempo/configuration/network/tls.md | Updates TLS client config reference to live_store_client. |
| docs/sources/tempo/configuration/manifest.md | Removes distributor ingester/kafka toggles and removes ingester/ingester-client sections from manifest. |
| docs/sources/tempo/configuration/_index.md | Updates configuration documentation language and client config references to live-store. |
| cmd/tempo/main.go | Removes single-binary ingester forced ring config; keeps single-binary live-store/generator ring forcing. |
| cmd/tempo/app/overrides_validation_test.go | Removes ingester replication-factor based override validation tests. |
| cmd/tempo/app/overrides_validation.go | Removes ingester replication-factor based override validation logic. |
| cmd/tempo/app/modules.go | Updates distributor module initialization to new constructor signature. |
| cmd/tempo/app/config_test.go | Updates config warning test to set LiveStore.CompleteBlockTimeout. |
| cmd/tempo/app/config.go | Removes ingester/ingester-client from root config and updates warning messaging to live-store. |
| cmd/tempo/app/app.go | Removes ingester readiness check from /ready. |
| CHANGELOG.md | Adds breaking-change entry for ingester config removal (but currently introduces a duplicate entry elsewhere). |
Comments suppressed due to low confidence (1)
modules/distributor/config.go:94
KafkaConfigdefaults (includingwrite_timeout) aren't applied becauseRegisterFlagsAndApplyDefaultsnever callscfg.KafkaConfig.RegisterFlags.... This can leaveKafkaConfig.WriteTimeoutat0, causingcontext.WithTimeout(..., 0)insendToKafka()to immediately time out (and the flags fordistributor.kafka_configalso won't be registered). Callcfg.KafkaConfig.RegisterFlagsWithPrefix(...)(using the distributor's prefix) so defaults are set and flags are available.
// RegisterFlagsAndApplyDefaults registers flags and applies defaults
func (cfg *Config) RegisterFlagsAndApplyDefaults(prefix string, f *flag.FlagSet) {
flagext.DefaultValues(&cfg.DistributorRing)
cfg.DistributorRing.KVStore.Store = "memberlist"
cfg.DistributorRing.HeartbeatTimeout = 5 * time.Minute
cfg.RetryAfterOnResourceExhausted = 0
cfg.OverrideRingKey = distributorRingKey
cfg.MaxAttributeBytes = 2048 // 2KB
f.BoolVar(&cfg.LogReceivedSpans.Enabled, util.PrefixConfig(prefix, "log-received-spans.enabled"), false, "Enable to log every received span to help debug ingestion or calculate span error distributions using the logs.")
f.BoolVar(&cfg.LogReceivedSpans.IncludeAllAttributes, util.PrefixConfig(prefix, "log-received-spans.include-attributes"), false, "Enable to include span attributes in the logs.")
f.BoolVar(&cfg.LogReceivedSpans.FilterByStatusError, util.PrefixConfig(prefix, "log-received-spans.filter-by-status-error"), false, "Enable to filter out spans without status error.")
f.BoolVar(&cfg.LogDiscardedSpans.Enabled, util.PrefixConfig(prefix, "log-discarded-spans.enabled"), false, "Enable to log every discarded span to help debug ingestion or calculate span error distributions using the logs.")
f.BoolVar(&cfg.LogDiscardedSpans.IncludeAllAttributes, util.PrefixConfig(prefix, "log-discarded-spans.include-attributes"), false, "Enable to include span attributes in the logs.")
f.BoolVar(&cfg.LogDiscardedSpans.FilterByStatusError, util.PrefixConfig(prefix, "log-discarded-spans.filter-by-status-error"), false, "Enable to filter out spans without status error.")
cfg.Usage.RegisterFlagsAndApplyDefaults(prefix, f)
}
You can also share your feedback on Copilot code review. Take the survey.
| * [BUGFIX] fix(traceql): err on division by zero [#6580](https://github.com/grafana/tempo/pull/6580) (@Proximyst) | ||
| * [BUGFIX] Return 400 instead of 500 when query_range or query_instant requests have unparseable start/end parameters [#6694](https://github.com/grafana/tempo/pull/6694) (@ruslan-mikhailov) | ||
|
|
||
|
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR removes remaining ingester-oriented configuration and wiring from the Tempo app and distributor write path, completing the transition to LiveStore/Kafka-based ingestion and updating mixins/examples/docs accordingly.
Changes:
- Remove the distributor’s ingester write path (ring/pool/client, metrics, and related tests), leaving Kafka and forwarder paths.
- Update Tempo mixin dashboards/config to remove ingester panels/job matchers and rename rollout service matching to
live-store. - Update app config, examples, docs, and manifest generation to drop
ingester/ingester_clientreferences and uselive_store/live_store_client.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pkg/docsgen/generate_manifest.go | Stops overriding ingester-specific fields when generating the config manifest. |
| operations/tempo-mixin/dashboards/tempo-writes.libsonnet | Removes the ingester-append-failures query from distributor write dashboards. |
| operations/tempo-mixin/dashboards/rollout-progress.libsonnet | Updates rollout service regex to track live-store instead of ingester. |
| operations/tempo-mixin/config.libsonnet | Removes ingester from mixin job configuration. |
| operations/tempo-mixin-compiled/dashboards/tempo-writes.json | Compiled dashboard updated to match ingester-metric removal. |
| operations/tempo-mixin-compiled/dashboards/tempo-rollout-progress.json | Compiled dashboard updated to match live-store regex change. |
| modules/distributor/receiver/shim.go | Updates distributor push duration metric help text to remove ingester wording. |
| modules/distributor/distributor_test.go | Removes ingester write-path test scaffolding and updates helpers to the new distributor constructor. |
| modules/distributor/distributor.go | Removes ingester client/ring/pool write path and related metrics; switches Kafka write timeout source. |
| modules/distributor/config.go | Removes deprecated ingester/kafka write-path toggles and ingester client factory hook. |
| integration/util/config-base.yaml | Drops deprecated distributor write-path toggles and ingester_client remote timeout from integration base config. |
| example/tk/tempo-microservices/main.jsonnet | Removes ingester component config and deprecated distributor write-path toggles from Jsonnet example. |
| example/tk/readme.md | Updates override example to use live_store+ instead of ingester+. |
| example/nomad/tempo-distributed/tempo.hcl | Replaces Nomad ingester group with live-store group and normalizes formatting. |
| example/nomad/tempo-distributed/config.yml | Updates example config from ingester to live_store, adds ingest/Kafka and live-store partition ring settings. |
| example/docker-compose/single-binary/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/multitenant/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/distributed/tempo.yaml | Removes deprecated distributor write-path toggles. |
| example/docker-compose/debug/tempo.yaml | Removes deprecated distributor write-path toggles. |
| docs/sources/tempo/configuration/network/tls.md | Updates TLS doc references from ingester_client to live_store_client. |
| docs/sources/tempo/configuration/manifest.md | Removes ingester and ingester_client sections from the generated manifest docs. |
| docs/sources/tempo/configuration/_index.md | Updates configuration docs wording and examples to reflect live-store/write-path terminology. |
| cmd/tempo/main.go | Removes single-binary forced ingester lifecycler config; keeps/extends single-binary ring forcing for live-store. |
| cmd/tempo/app/overrides_validation_test.go | Removes overrides validation tests that depended on ingester replication factor. |
| cmd/tempo/app/overrides_validation.go | Removes runtime override validation that referenced ingester replication factor. |
| cmd/tempo/app/modules.go | Updates distributor initialization to match new constructor signature (no ingester client/ring). |
| cmd/tempo/app/config_test.go | Updates config warnings test to use LiveStore.CompleteBlockTimeout. |
| cmd/tempo/app/config.go | Removes ingester/ingester_client from root config; switches warning logic to live-store. |
| cmd/tempo/app/app.go | Removes ingester readiness check and ingester field from the app struct. |
| CHANGELOG.md | Adds the breaking-change entry under “3.0 Cleanup” and reorders an existing entry. |
You can also share your feedback on Copilot code review. Take the survey.
| * [BUGFIX] fix(traceql): err on division by zero [#6580](https://github.com/grafana/tempo/pull/6580) (@Proximyst) | ||
| * [BUGFIX] Return 400 instead of 500 when query_range or query_instant requests have unparseable start/end parameters [#6694](https://github.com/grafana/tempo/pull/6694) (@ruslan-mikhailov) | ||
|
|
||
|
|
* distributor: remove ingester write path * docs: remove stale distributor ingester config * mixin: remove stale distributor ingester panel * app: remove ingester module wiring * cmd: remove remaining app ingester config * docs(changelog): add entry for grafana#6667 * manifest * refactor: remove leftover distributor ingester references * chore: remove remaining ingester example references * add warning check * Remove duplicate changelog entry Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix changelog --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
What this PR does:
This PR removes the ingester module to loaded. It also remove the deprecated code in the distributor.
This is a breaking change and we need to patch any place where the ingester config is still in use
Which issue(s) this PR fixes:
Fixes #
Checklist
CHANGELOG.mdupdated - the order of entries should be[CHANGE],[FEATURE],[ENHANCEMENT],[BUGFIX]