chore(exporters): delete dead otlphttp + stdoutexporter wrappers#345
Merged
Conversation
added 2 commits
June 1, 2026 01:37
The OCB build assembled from builder-config.yaml has shipped upstream otlphttpexporter + debugexporter since v0.2.0. The in-tree wrapper packages had zero Go importers outside their own _test.go files. Net: -21 source files / ~3,981 LOC. Drops 4 transitive collector deps (exporter, exportertest, consumertest, xexporter). Operator-impacting: - Configs naming 'otlphttp' as an exporter type still work (upstream component-id is identical). - Configs naming 'stdoutexporter' should switch to 'debug' (upstream debugexporter component-id). Chart default is already 'debug'. - otelcol_exporter_otlphttp_calls_total / _errors_total disappear; upstream emits otelcol_exporter_sent_* / send_failed_* via exporterhelper. Migration table in docs/migration/v0.1-to-v0.2.md carries the per-component substitution annotation. Closes #333, #334. Signed-off-by: Tri Lam <tri@maydow.com>
Signed-off-by: Tri Lam <tri@maydow.com>
Contributor
Author
|
Addressed reviewer nit: dropped two stale 'in-tree wrapper retired post-v0.2.0' footnotes in docs/FAILURE-MODES.md (lines 96, 99). Test column now cites upstream paths directly. Historical context lives in CHANGELOG. (Reviewer cited three; only two occurrences existed in-file.) |
5 tasks
trilamsr
added a commit
that referenced
this pull request
Jun 1, 2026
## Summary Closes v1.0-rc1 cut criterion 11 (`docs/migration/v0.x-to-v1.0.md` — one-shot forward-flatten upgrade guide). The per-minor guides (`v0.1-to-v0.2.md`, `v0.2-to-v0.3.md`) remain authoritative for the intermediate hops; this consolidator covers every operator-visible break across the v0.x window in a single document. Ten sections, each with WHAT/WHY/OPERATOR-ACTION/BEFORE/AFTER: 1. Exporter wrapper deletions (`otlphttp` → upstream `otlphttpexporter`, `stdoutexporter` → upstream `debug`) — landed in #345. 2. Self-telemetry metric series renames (`otelcol_exporter_otlphttp_*` → `otelcol_exporter_sent_*`). 3. Verdict schema v1.0-rc1 published at `docs/schemas/verdict-1.0.0-rc1.json` (cross-cut with criterion 2). 4. Attribute namespace hard-lock (criterion 3 enforcement clock). 5. Chart NetworkPolicy template (opt-in default-deny, #301). 6. `minReadySeconds: 10` rollout soak (#320, #321) — adds 10s × pod-count to upgrade wall-clock. 7. `/readyz` retired from chart docs in favor of `kubectl rollout status` plus the upstream `healthcheckextension` `/` endpoint. 8. SLO metric vocabulary (criterion 7 binding-tier escalation). 9. OCB distro pin floor (v0.130.0 core+contrib; OCB ≥ v0.125.0 from-source) — cross-link to criterion 5 support matrix. 10. Deprecation policy binding (criterion 4 enforcement gate). Cross-links to the new guide added from `docs/README.md`, `docs/RELEASE-CHECKLIST.md` (checkbox flipped), and `docs/v1-rc1-cut-criteria.md` (criterion 11 status ☐ → ☑). ## Test plan - [x] `bash scripts/doc-check.sh` clean (markdown link integrity, banned-phrase lint, all gated assertions pass). - [x] Pre-commit hooks pass (golangci-lint 0 issues, go vet, go mod verify, attribute-namespace-check, no-autoupdate-check). - [x] All cross-references resolve on-disk (verdict schema artifact, v0.1-to-v0.2.md, v0.2-to-v0.3.md, RFC-0013, ATTRIBUTES.md, SLOs.md, ATTRIBUTES.md, scripts/attribute-namespace-check.sh, networkpolicy.yaml, verdict.go, verdict_envelope_schema_test.go). - [x] Commit subject ≤72 chars (53 chars). - [x] Forward-looking references to `docs/DEPRECATION.md` and `docs/SUPPORT-MATRIX.md` (parallel in-flight cut-criterion-4 + 5 PRs) are bare backtick paths, not markdown links — doc-check link-integrity gate stays green until those PRs land and the links can be promoted. ```release-notes - docs(migration): publish v0.x → v1.0 upgrade guide covering every operator-visible break across the v0.x window (exporter wrappers, self-tel metric renames, verdict-schema publication, attribute lockdown, NetworkPolicy, minReadySeconds, /readyz retirement, SLO vocabulary, OCB pin floor, deprecation policy). Closes v1.0-rc1 cut criterion 11. ``` Signed-off-by: Tri Lam <tri@maydow.com> Co-authored-by: Tri Lam <tri@maydow.com>
9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The OCB build assembled from
builder-config.yamlhas shipped upstreamgo.opentelemetry.io/collector/exporter/otlphttpexporter+debugexportersince v0.2.0 (lines 59-60). The two in-tree exporter wrapper packages were left behind after the RFC-0013 distribution-first pivot and have had zero Go importers outside their own_test.gofiles since the pivot landed. This PR finishes that cleanup.components/exporters/otlphttp/— 13 files / 2,904 LOC. Superseded by upstreamotlphttpexporterv0.130.0.components/exporters/stdoutexporter/— 8 files / 1,077 LOC. Superseded by upstreamdebugexporterv0.130.0 (component-iddebug).exporter,exporter/exportertest, indirectconsumertest+xexporter); -42 lines offgo.mod+go.sum.Closes #333, #334.
Root cause
Not a bug — strategic dead code. Per the v1.0-rc1 simplification audit (
docs/v1-rc1-simplification-audit.md§7 rows 1 + 2, risk score 1), both wrappers had:_test.gofiles)._build/components.go.builder-config.yaml.The followups shard
docs/followups/otlphttp.mdhad every code-path item tagged[STRIKE]against the wrapper — that shard is now deleted along with the code it tracked.Operator-impacting changes
What else moved
Doc + workflow + config cascade so nothing dangles at a deleted package:
module/pkg/selftel/selftel.go— package doc updated; the two wrappers no longer exist as "copies it replaced.".github/workflows/install-bench.yml— droppedcomponents/exporters/otlphttp/**frompull_request+pushpaths triggers; header comment now says "upstream otlphttpexporter."bench/install/README.md— narrative updated to "upstreamotlphttpexporter"; the failed-test-reference bullet now points at upstream tests.docs/FAILURE-MODES.md— two rows (network-error mid-send, bad-scheme endpoint) re-pointed from the in-tree wrapper tests to upstreamotlphttpexporter/confighttp.docs/README.md— dropped the wrapper README index row; integration-recipe rows now say "upstreamotlphttpexporter" instead of "in-tree."docs/STRATEGY.md— "queued for deletion" list no longer carriesstdoutexporter; explicit note that both wrappers were deleted post-v0.2.0.docs/MILESTONES.md— M1 row's "the bundledstdoutexportercanonical example remains" annotation now reflects post-v0.2.0 retirement.docs/migration/v0.1-to-v0.2.md— per-component substitution table footnotes the wrapper retirement + instrument-name implication (the PromQL diff recipe in the file still shows the v0.1.x→v0.2.0 transition, which is correct history).docs/research/baselines.md— stdoutexporter coverage row dropped.docs/v1-rc1-simplification-audit.md— orphan-wrappers table now shows only pyspy (the remaining row); ranked-deletion candidates 1 + 2 marked Done with PR links.docs/v1-rc1-test-audit.md— coverage + integration-test rows dropped.CHANGELOG.md—[Unreleased] Removedentry added; two stale "source survives in-tree" / "eight surviving in-tree components" annotations corrected.docs/followups/otlphttp.md— deleted (every code-path item was[STRIKE]against the now-deleted wrapper).Left untouched as historical decision-trail (per
feedback_no_bloat's "archived files are suspect" being asymmetric — these are research-snapshot history, not active dead code):docs/research/m5-m6-research.md§F10 — original "shipcomponents/exporters/otlphttp/as in-tree adapter" decision text. RFC-0013 superseded this; the file as a whole carries the supersession context.docs/rfcs/archived/0004-clockreceiver-stdoutexporter.md— already archived.Chart values + recipes use
otlphttpas the upstream component-id (the chart key for the OCB-bundled exporter), not the wrapper import path — no change needed there.Test plan
git rm -rboth directories; verifycomponents/exporters/removed (no empty parent).GOWORK=off go test ./...green at root.GOWORK=off go test ./...green atmodule/.GOWORK=off go vet ./...clean.make tidydropsexporter,exporter/exportertest,consumertest,xexporter;make tidy-checkclean afterwards../scripts/register-lint.shclean (nofunc Register*outsidecomponents/).make coverage-checkclean (pyspy 82.3% ≥ 60% gate).make doc-check+chart-appversion-check.shclean.install-benchworkflow re-runs against the trimmed paths trigger (will fire on first PR that touches the listed paths post-merge).make ci+install-benchpass on this PR.