Skip to content

fix(tapper): stop retrying telemetry batches the hub rejects - #81

Merged
jlrickert merged 1 commit into
mainfrom
fix/telemetry-reject-backoff
Aug 6, 2026
Merged

fix(tapper): stop retrying telemetry batches the hub rejects#81
jlrickert merged 1 commit into
mainfrom
fix/telemetry-reject-backoff

Conversation

@jlrickert

Copy link
Copy Markdown
Owner

A 400 was treated as retryable, so a client whose payload the hub will never
accept re-sent the same rejected batch on every flush for the life of the
process.

The hub's telemetry decoder disallows unknown fields, so this is exactly what a
client one version ahead of its hub does: it cannot negotiate the payload down,
and no amount of retrying will help. The result is a silent stream of guaranteed
400s until the process exits.

Treat 400 like the other terminal statuses and disable the process reporter.
Telemetry degrades to nothing, which is the right outcome for a best-effort
channel, and it removes the ordering constraint between this repo and the hub —
either can release first.

413 stays retryable on purpose: batch contents vary, so a too-large batch says
nothing about the next one.

Testing

New subtest asserts a 400 disables the reporter and the rejected batch is not
retried. go build ./... && go test ./... green.

A 400 was treated as retryable, so a client whose payload the hub will
never accept re-sent the same rejected batch on every flush for the life
of the process. The hub's decoder disallows unknown fields, so this is
exactly what a client one version ahead of its hub does — it cannot
negotiate the payload down, and no amount of retrying will help.

Treat 400 like the other terminal statuses and disable the process
reporter. Telemetry degrades to nothing, which is the correct outcome
for a best-effort channel, and it lets the client and the hub release in
either order rather than requiring the hub to go first.

413 stays retryable: batch contents vary, so a too-large batch says
nothing about the next one.
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.

1 participant