]> Cypherpunks repositories - gostls13.git/commitdiff
internal/trace/v2: dump text trace on failure only if it fits in the log
authorMichael Anthony Knyszek <mknyszek@google.com>
Tue, 21 Nov 2023 16:51:57 +0000 (16:51 +0000)
committerGopher Robot <gobot@golang.org>
Tue, 21 Nov 2023 23:10:51 +0000 (23:10 +0000)
Currently we dump text traces to the build log on failure
unconditionally, but this may cause the old infrastructure's builds'
logs to get truncated. Avoid that by setting a threshold on the maximum
size of the text trace we're willing to dump.

We don't need this workaround on the new infrastructure -- logs don't
get truncated there.

Change-Id: I0f50f50bb4b90f87250b673fbe56f48235325610
Reviewed-on: https://go-review.googlesource.com/c/go/+/544216
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
src/internal/trace/v2/trace_test.go

index b2d7781991863842988b51ccf43ebc7243b9cf47..3300c00fe80945df3e83ea207dbb1814567eaed0 100644 (file)
@@ -526,6 +526,7 @@ func testTraceProg(t *testing.T, progName string, extra func(t *testing.T, trace
 
        // Check if we're on a builder.
        onBuilder := testenv.Builder() != ""
+       onOldBuilder := !strings.Contains(testenv.Builder(), "gotip") && !strings.Contains(testenv.Builder(), "go1")
 
        testPath := filepath.Join("./testdata/testprog", progName)
        testName := progName
@@ -567,7 +568,18 @@ func testTraceProg(t *testing.T, progName string, extra func(t *testing.T, trace
                        // data is critical for debugging and this is the only way
                        // we can currently make sure it's retained.
                        t.Log("found bad trace; dumping to test log...")
-                       t.Log(dumpTraceToText(t, tb))
+                       s := dumpTraceToText(t, tb)
+                       if onOldBuilder && len(s) > 1<<20+512<<10 {
+                               // The old build infrastructure truncates logs at ~2 MiB.
+                               // Let's assume we're the only failure and give ourselves
+                               // up to 1.5 MiB to dump the trace.
+                               //
+                               // TODO(mknyszek): Remove this when we've migrated off of
+                               // the old infrastructure.
+                               t.Logf("text trace too large to dump (%d bytes)", len(s))
+                       } else {
+                               t.Log(s)
+                       }
                } else if t.Failed() || *dumpTraces {
                        // We asked to dump the trace or failed. Write the trace to a file.
                        t.Logf("wrote trace to file: %s", dumpTraceToFile(t, testName, stress, tb))