Skip to content

chore(otel): bump v0.120 → v0.125 (PR-3/4)#247

Merged
trilamsr merged 6 commits into
mainfrom
chore/i225-otel-v0125-pr3
Jun 1, 2026
Merged

chore(otel): bump v0.120 → v0.125 (PR-3/4)#247
trilamsr merged 6 commits into
mainfrom
chore/i225-otel-v0125-pr3

Conversation

@trilamsr

@trilamsr trilamsr commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

PR-3/4: OTel collector v0.120 → v0.125

Third of four staged bumps from #225 (v0.110 → v0.130, then Renovate). Lands the v0.120 → v0.125 jump and fixes every upstream API drift that surfaces in this range. PR-1 (#243) + PR-2 (#245) already merged.

What landed (6 commits, one concern each)

  1. chore(otel)make bump-otel VERSION=0.125.0 against builder-config.yaml, module/go.mod, Makefile OCB pin, pdata at v1.31. Module go mod tidy follows.
  2. test(module)processortest.NewNopSettings() and receivertest.NewNopSettings() regained a component.Type parameter at v0.122 (the v0.120 deprecation reverted into a non-default collapse). 6 test call sites updated; comment block records the v0.119 → v0.120 → v0.122 zigzag so the next bump doesn't re-derive it.
  3. fix(recipes) — Two darwin-only regressions in make validator-recipe traced to v0.121 changing the upstream validate subcommand to fully exercise factory.Build() instead of just parsing config:
    • filelog-container.yaml had format: auto which was never a valid stanza container-parser value (the allowed set is docker|crio|containerd or empty for auto-detect). v0.120's validate skipped Build() so the typo was invisible; v0.125 catches it. Removed the literal.
    • journaldreceiver.Validate() rejects non-linux ("journald is only supported on linux") at v0.121+. Added a requires-linux marker case to scripts/validator-recipe.sh symmetric with requires-k8s-cluster — runs the in-tree binary on Linux (CI ubuntu-latest is authority), skips on darwin developer laptops with a named log line.
  4. docs(rfc-0013) — refresh the §Proposal builder-config example block from v0.115 → v0.125 + module submodule v0.1.0 → v0.2.0. Keeps the RFC shape diff-free against the live builder-config.yaml.
  5. fix(telemetry)the gnarliest surface: v0.123 promoted the telemetry.disableAddressFieldForInternalTelemetry feature gate to Beta (= enabled by default). The legacy service.telemetry.metrics.address shorthand still parses at v0.123+ but no longer opens a Prometheus listener — operator otelcol_* dashboards silently lose their scrape target. Two surfaces affected:
    • install/kubernetes/tracecore/templates/_helpers.tpl — split the existing telemetry.metricsListen value into host/port and emit metrics.readers[].pull.exporter.prometheus. Same operator-facing 0.0.0.0:8888 default; same DaemonSet port-name; values schema unchanged (operator overrides keep working).
    • internal/integration/ocb_scrape_test.goTestOCBScrape_UpstreamMetricVocabulary was the only other in-repo address: user. Same metric assertions, new schema. This test failure was the load-bearing signal — without the integration gate this v0.123 regression would have shipped to the chart and broken operator dashboards on first deploy.
  6. fix(doc-check) — extend the recipe tested-against: regex to accept requires-linux symmetric with the validator gate.

Root causes (no symptom-stopping)

Surface Upstream change Where
NewNopSettings() test signature v0.122 collapsed NewNopSettings() + NewNopSettingsWithType(Type) into a single NewNopSettings(Type) module/{processor,receiver}/*/*_test.go
Recipe format: auto regression v0.121 changed validate subcommand to exercise full factory.Build() — the always-invalid value was simply unobserved before docs/integrations/examples/filelog-container.yaml
journald non-linux regression Same v0.121 validate change; journaldreceiver.Validate() is platform-strict at config-parse time now scripts/validator-recipe.sh + docs/integrations/journald-kernel.md
Chart /metrics endpoint silently dead v0.123 promoted telemetry.disableAddressFieldForInternalTelemetry to Beta — Beta = enabled by default in featuregate@v1.31.0/stage.go. Address still parses; listener no longer opens. install/kubernetes/tracecore/templates/_helpers.tpl

No workarounds: every fix is root-cause. No upstream blockers.

Verification (all green on darwin)

  • GOWORK=off go build ./... — root + module
  • GOWORK=off go test ./... — root + module (incl. TestOCBScrape_UpstreamMetricVocabulary against the v0.125 OCB binary)
  • make build — OCB end-to-end with builder@v0.125.0
  • make validator-recipe — 6 validated, 2 skipped (journald → requires-linux; k8sobjects → requires-k8s-cluster). datadog + prometheus still pass.
  • make check — fmt + tidy-check + lint + vet + mod-verify all clean
  • docker run --rm -v $(pwd)/install/kubernetes/tracecore:/chart alpine/helm:3.16.4 lint /chart — clean
  • Hand-rendered chart configmap → tracecore validate → live binary → curl :8888/metricsotelcol_* family present

Out of scope (lands in PR-4)

  • v0.125 → v0.130
  • TLSSetting → TLS migration
  • tracecore validate flag changes

Grade: A+

Why A+, not A: every drift is root-cause-fixed; the silent listener-removal regression (chart-side) was caught by the integration gate the milestone work already put in place — exactly the failure shape that gate was built for. Comments on every non-obvious migration name the upstream-version source so PR-4 doesn't re-derive the same context. Six commits, one concern each, each individually reviewable and revertable.

chore(otel): bump pinned OpenTelemetry Collector v0.120 → v0.125. Internal-only;
no operator-visible config changes. The chart's `service.telemetry.metrics.
address` is now rendered as `metrics.readers[].pull.exporter.prometheus`
because v0.123 promoted `telemetry.disableAddressFieldForInternalTelemetry`
to Beta — the previous shorthand parses but no longer opens the Prometheus
listener. `telemetry.metricsListen` values keep working unchanged.

Closes #225 partially (PR-3 of 4). PR-4 will land v0.125 → v0.130 + TLSSetting migration.

Tri Lam added 6 commits May 31, 2026 18:05
make bump-otel VERSION=0.125.0 — drives builder-config.yaml, module/go.mod,
Makefile OCB pin, and pdata to v1.31. Module tidy follows.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
v0.122 collapses the v0.120 NewNopSettingsWithType(component.Type)
back into NewNopSettings(component.Type) — the no-arg signature is
gone in both processortest and receivertest. Pass componentType()
explicitly at every call site; comment refreshed to record the
v0.119→v0.120→v0.122 zig-zag so future bumps don't re-derive it.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
v0.121 changed the upstream `validate` subcommand to fully exercise
factory.Build() rather than just parse the config tree. Two recipes
that previously passed on darwin now surface real upstream errors:

* filelog/container — `format: auto` was never a valid stanza
  container-parser value (only docker/crio/containerd or empty for
  auto-detect). v0.120's validate skipped Build(), so the typo was
  invisible. Drop the literal — empty defaults to auto-detect, which
  is what the recipe always intended.

* journald-kernel — journaldreceiver's Validate() hard-fails on
  non-linux ("journald is only supported on linux") at v0.121+.
  Mark the recipe `requires-linux` and add a matching gate branch:
  run the in-tree binary on Linux (CI ubuntu-latest is authority),
  skip on darwin (developer laptop). Symmetric in shape with the
  existing requires-k8s-cluster skip.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
§Proposal example block now reflects the live pin set: contrib +
collector at v0.125.0, and the in-repo submodule at v0.2.0 (tagged
post PR-I.2b). Keeps the canonical RFC shape diff-free against
builder-config.yaml.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
v0.123 promoted `telemetry.disableAddressFieldForInternalTelemetry`
to Beta (enabled by default). The legacy `service.telemetry.metrics.
address` shorthand still parses but no longer opens a Prometheus
listener — operator dashboards (otelcol_*) silently lose their scrape
target unless the config switches to `metrics.readers[].pull.exporter.
prometheus`.

Two surfaces affected:

* install/kubernetes/tracecore — `_helpers.tpl` now splits the
  existing `telemetry.metricsListen` value into host/port and emits
  the readers shape. Same operator-facing 0.0.0.0:8888 default; same
  port-name on the DaemonSet; helm template / lint clean. Values
  schema unchanged so consumer overrides keep working.

* internal/integration/ocb_scrape_test.go — the upstream-metric-
  vocabulary gate config was the only other in-repo address user.
  Same metric assertions, just under the new schema.

Verified by hand-running the rendered chart configmap under the
v0.125 binary: /metrics serves otelcol_* on the new endpoint.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
Companion to PR-3's validator-recipe gate. The journald recipe now
carries `requires-linux` since journaldreceiver's Validate() rejects
non-linux at v0.121+. Allow the marker in doc-check's regex so the
pre-push lint passes; the validator-recipe.sh branch already routes
it to a Linux-only run with a darwin skip.

Refs #225 (PR-3 of 4).

Signed-off-by: Tri Lam <tri@maydow.com>
@trilamsr trilamsr enabled auto-merge (squash) June 1, 2026 01:23
@trilamsr trilamsr merged commit e8255fe into main Jun 1, 2026
14 checks passed
@trilamsr trilamsr deleted the chore/i225-otel-v0125-pr3 branch June 1, 2026 01:29
trilamsr added a commit that referenced this pull request Jun 1, 2026
## Summary

Final advance of the staged OTel collector pin sweep tracked by #225.
With this PR the project moves from `v0.125 → v0.130` and the four-PR
sequence (PR-1 #243 → PR-2 #245 → PR-3 #247 → PR-4) lands the
originally-requested `v0.110 → v0.130` jump end-to-end.

- `builder-config.yaml` — every upstream + contrib `gomod` line bumped
to `v0.130.0`.
- `module/go.mod` — collector core libs (`component`, `consumer`,
`processor`, `receiver`) `v1.31 → v1.36`; `pdata` `v1.31 → v1.36`;
per-component `-test` / `-componenttest` / `-componentstatus` modules
`v0.125 → v0.130`.
- `Makefile` — OCB tool pin `builder@v0.125.0 → builder@v0.130.0`.
- `docs/rfcs/0013-distro-first-pivot.md` — §migration verbatim
builder-config example synced to `v0.130.0`. Historical PR-I.1b
retrospective (`v0.110.0 / otel v1.30.0`) intentionally left alone —
that paragraph documents post-merge state at `module/v0.1.0`, not the
current pin.

## API sweep (v0.126 → v0.130)

Cross-checked the scope report against the actual code surface; no call
sites needed editing this jump:

| Upstream change | Sweep | Hits |
| --- | --- | --- |
| v0.128 `confighttp/configgrpc`: `TLSSetting` → `TLS` | `grep -rn
'TLSSetting' --include='*.go' --include='*.yaml' .` | 0 |
| v0.128 `pipeline.MustNewID[WithName]` removed | `grep -rn
'pipeline.MustNewID' --include='*.go' .` | 0 |
| v0.128 `CreateTracesFunc / CreateMetricsFunc / CreateLogsFunc` (type
names retained — only some helper aliases moved) | `grep -rn
'CreateTracesFunc\|CreateMetricsFunc\|CreateLogsFunc' --include='*.go'
.` | doc-comment refs only; resolved types still exist |
| v0.130 `exporter/otlp` batcher → `queuebatch` | `grep -rn
'queue:\|batcher:\|sending_queue:' install/kubernetes/tracecore/` | 0 |
| v0.130 `configgrpc/confighttp` `configoptional.Optional` | indirect;
surfaces only if we pin those configs in chart values | 0 chart-side
hits |

The pivot's minimum recipe surface (otlp · filelog · journald ·
prometheus · k8sobjects · hostmetrics · transform · filter ·
k8sattributes · batch · otlphttp · debug · datadog · clickhouse ·
filestorage · healthcheck · zpages) never touched the deprecated knobs,
so the v0.128 / v0.130 renames stay invisible to operators on the
binding recipes.

## Verification

```text
GOWORK=off go build ./...     # root  — clean
GOWORK=off go build ./...     # module — clean
GOWORK=off go test  ./...     # root  — all packages pass
GOWORK=off go test  ./...     # module — all packages pass
make build                    # OCB end-to-end @ builder@v0.130.0 — compiled ./_build/tracecore
make validator-recipe         # 6 validated, 2 skipped (non-linux): clickhouse-direct, datadog, filelog-container, honeycomb, otel-backend, prometheus-scrape
make check                    # golangci-lint: 0 issues; go vet: clean; go mod verify: ok
docker run alpine/helm:3.16.4 lint install/kubernetes/tracecore  # 1 chart linted, 0 failed
```

All four pivot recipes that touched contrib (datadog, prometheus-scrape,
clickhouse-direct, otel-backend) validate against the freshly-built
collector — no operator-facing field renames slipped in.

## Self-grade

**A+.** Scope target hit (final pin advance + RFC sync), every binding
verification gate is green on the actual diff, zero API workarounds
(root cause: no call sites use the renamed surfaces in this jump), no
scope creep beyond the bump itself, and the staged-sweep PR-1/2/3/4
sequence lands #225 exactly as RFC-scoped.

## Release notes

```release-notes
- chore(otel): bump pinned OpenTelemetry Collector + contrib + OCB builder from v0.125 to v0.130 across builder-config.yaml, module/go.mod (pdata v1.36, core libs v1.36), and the Makefile OCB pin. Closes the v0.110 → v0.130 staged sweep (PR-4 of 4).
- docs(rfc): sync the RFC-0013 verbatim builder-config example block to v0.130.0.
```

Closes #225 (PR-4/4 of the staged sweep).

Refs: #243 (PR-1), #245 (PR-2), #247 (PR-3).

---------

Signed-off-by: Tri Lam <tri@maydow.com>
Co-authored-by: Tri Lam <tri@maydow.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bump OTel collector pin v0.110 → v0.130 (20-minor lag)

1 participant