]> Cypherpunks repositories - gostls13.git/commit
internal/trace/v2: correctly handle a broken spilled batch
authorMichael Anthony Knyszek <mknyszek@google.com>
Wed, 8 May 2024 16:27:03 +0000 (16:27 +0000)
committerMichael Knyszek <mknyszek@google.com>
Wed, 8 May 2024 19:04:05 +0000 (19:04 +0000)
commit4513f1a1c1037574bfd94b8637329246f475a534
tree489274bdbdfe13c9bb98c04de022935dd05173d6
parentff743ce862440f332f76a8a24333a90b7afc9fa6
internal/trace/v2: correctly handle a broken spilled batch

Currently if the first batch of the next generation in the trace is
broken, then the previous generation will fail to parse. The parser
currently relies on one complete batch of the next generation to
continue.

However, this means that recovering a complete generation from a trace
with a broken tail doesn't always work. Luckily, this is fixable. When
the parser encounters an error reading a batch in a generation, it
simply writes down that error and processes it later, once the
generation has been handled. If it turns out the error was for the same
generation and something bigger is broken, then the parser will catch
that sooner when validating the generation's events and the error will
never show up. Otherwise, the generation will parse through successfully
and we'll emit the error once that's done.

Fixes #55160.

Change-Id: I9c9c19d5bb163c5225e18d11594ca2a8793c6950
Reviewed-on: https://go-review.googlesource.com/c/go/+/584275
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/internal/trace/v2/generation.go
src/internal/trace/v2/reader.go
src/internal/trace/v2/testdata/generators/go122-fail-first-gen-first.go [new file with mode: 0644]
src/internal/trace/v2/testdata/tests/go122-fail-first-gen-first.test [new file with mode: 0644]