Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
108627: backupccl: skip backing up excluded spans r=dt a=dt

Previously we sent export requests to all spans being backed up. The ranges for spans of tables that had set the flag to exclude data from backup would reply with an empty response, excluding their data, but the backup process still sent these ranges these requests.

This changes the backup process to not send requests for spans from excluded tables, when performing database, table, or cluster backups. Backups of tenants will still send export requests to every range for the tenant span, and those ranges that host tables that are excluded will continue to reply with no data.

This is done both as an optimization, and so that backups can succeed even when a table is unavailable, if, and only if, that table is excluded.

Release note (ops change): BACKUP now skips contacting the ranges for tables on which exclude_data_from_backup is set, and can thus succeed even if an excluded table is unavailable.
Epic: none.

108644: internal/issues: allow creation of issues not marked as C-test-failure r=srosenberg a=renatolabs

Roachtest has, for a while, been creating GitHub issues for events that do not correspond to a test failure that needs investigation. Specifically, infrastructure flakes such as cluster creation failures and SSH errors are examples of issues like this.

With Code Yellow and our focus on issues marked with `C-test-failure`, these infrastructure flake issues add noise. With this commit, we add the ability to make issues not be marked with `C-test-failure`, and use that functionality when creating infra-flake related issues in roachtest.

Epic: none

Release note: None

108669: sql/sem/builtins: deflake TestGenerateUniqueUnorderedIDOrder r=rafiss a=andyyang890

This patch deflakes TestGenerateUniqueUnorderedIDOrder by increasing the confidence level used for the statistical z-test.

Fixes #108668

Release note: None

Co-authored-by: David Taylor <tinystatemachine@gmail.com>
Co-authored-by: Renato Costa <renato@cockroachlabs.com>
Co-authored-by: Andy Yang <yang@cockroachlabs.com>
  • Loading branch information
4 people committed Aug 14, 2023
4 parents 83f1421 + c5219e3 + 892e016 + 9c83112 commit b1db60c
Show file tree
Hide file tree
Showing 11 changed files with 308 additions and 59 deletions.
17 changes: 17 additions & 0 deletions pkg/ccl/backupccl/backup_job.go
Expand Up @@ -156,6 +156,23 @@ func backup(
}
}

// Add the spans for any tables that are excluded from backup to the set of
// already-completed spans, as there is nothing to do for them.
descs := iterFactory.NewDescIter(ctx)
defer descs.Close()
for ; ; descs.Next() {
if ok, err := descs.Valid(); err != nil {
return roachpb.RowCount{}, 0, err
} else if !ok {
break
}

if tbl, _, _, _, _ := descpb.GetDescriptors(descs.Value()); tbl != nil && tbl.ExcludeDataFromBackup {
prefix := execCtx.ExecCfg().Codec.TablePrefix(uint32(tbl.ID))
completedSpans = append(completedSpans, roachpb.Span{Key: prefix, EndKey: prefix.PrefixEnd()})
}
}

// Subtract out any completed spans.
spans := filterSpans(backupManifest.Spans, completedSpans)
introducedSpans := filterSpans(backupManifest.IntroducedSpans, completedIntroducedSpans)
Expand Down
58 changes: 47 additions & 11 deletions pkg/ccl/backupccl/backup_test.go
Expand Up @@ -6454,6 +6454,15 @@ func TestProtectedTimestampsFailDueToLimits(t *testing.T) {
})
}

// Check if export request is from a lease for a descriptor to avoid picking
// up on wrong export requests
func isLeasingExportRequest(r *kvpb.ExportRequest) bool {
_, tenantID, _ := keys.DecodeTenantPrefix(r.Key)
codec := keys.MakeSQLCodec(tenantID)
return bytes.HasPrefix(r.Key, codec.DescMetadataPrefix()) &&
r.EndKey.Equal(r.Key.PrefixEnd())
}

func TestPaginatedBackupTenant(t *testing.T) {
defer leaktest.AfterTest(t)()
defer log.Scope(t).Close(t)
Expand Down Expand Up @@ -6489,14 +6498,6 @@ func TestPaginatedBackupTenant(t *testing.T) {
return fmt.Sprintf("%v%s", span.String(), spanStr)
}

// Check if export request is from a lease for a descriptor to avoid picking
// up on wrong export requests
isLeasingExportRequest := func(r *kvpb.ExportRequest) bool {
_, tenantID, _ := keys.DecodeTenantPrefix(r.Key)
codec := keys.MakeSQLCodec(tenantID)
return bytes.HasPrefix(r.Key, codec.DescMetadataPrefix()) &&
r.EndKey.Equal(r.Key.PrefixEnd())
}
params.ServerArgs.Knobs.Store = &kvserver.StoreTestingKnobs{
TestingRequestFilter: func(ctx context.Context, request *kvpb.BatchRequest) *kvpb.Error {
for _, ru := range request.Requests {
Expand Down Expand Up @@ -9437,6 +9438,8 @@ func TestExcludeDataFromBackupAndRestore(t *testing.T) {
defer leaktest.AfterTest(t)()
defer log.Scope(t).Close(t)

var exportReqsAtomic int64

tc, sqlDB, iodir, cleanupFn := backupRestoreTestSetupWithParams(t, singleNode, 10,
InitManualReplication, base.TestClusterArgs{
ServerArgs: base.TestServerArgs{
Expand All @@ -9448,6 +9451,17 @@ func TestExcludeDataFromBackupAndRestore(t *testing.T) {
SpanConfig: &spanconfig.TestingKnobs{
SQLWatcherCheckpointNoopsEveryDurationOverride: 100 * time.Millisecond,
},
Store: &kvserver.StoreTestingKnobs{
TestingRequestFilter: func(ctx context.Context, request *kvpb.BatchRequest) *kvpb.Error {
for _, ru := range request.Requests {
if exportRequest, ok := ru.GetInner().(*kvpb.ExportRequest); ok &&
!isLeasingExportRequest(exportRequest) {
atomic.AddInt64(&exportReqsAtomic, 1)
}
}
return nil
},
},
},
},
})
Expand All @@ -9468,8 +9482,11 @@ func TestExcludeDataFromBackupAndRestore(t *testing.T) {
conn := tc.Conns[0]

sqlDB.Exec(t, `CREATE TABLE data.foo (id INT, INDEX bar(id))`)
sqlDB.Exec(t, `INSERT INTO data.foo select * from generate_series(1,10)`)
sqlDB.Exec(t, `INSERT INTO data.foo select * from generate_series(1,5)`)

sqlDB.Exec(t, `BACKUP DATABASE data INTO $1`, localFoo)

sqlDB.Exec(t, `INSERT INTO data.foo select * from generate_series(6,10)`)
// Create another table.
sqlDB.Exec(t, `CREATE TABLE data.bar (id INT, INDEX bar(id))`)
sqlDB.Exec(t, `INSERT INTO data.bar select * from generate_series(1,10)`)
Expand All @@ -9489,11 +9506,30 @@ func TestExcludeDataFromBackupAndRestore(t *testing.T) {
}
return true, nil
})
sqlDB.Exec(t, `BACKUP DATABASE data INTO $1`, localFoo)

sqlDB.Exec(t, `BACKUP DATABASE data INTO LATEST IN $1`, localFoo)
sqlDB.Exec(t, `CREATE TABLE data.baz (id INT)`)
sqlDB.Exec(t, `ALTER TABLE data.baz SET (exclude_data_from_backup = true)`)
sqlDB.Exec(t, `INSERT INTO data.baz select * from generate_series(1,10)`)

waitForReplicaFieldToBeSet(t, tc, conn, "baz", "data", func(r *kvserver.Replica) (bool, error) {
if !r.ExcludeDataFromBackup() {
return false, errors.New("waiting for the range containing table data.foo to split")
}
return true, nil
})

sqlDB.Exec(t, `BACKUP DATABASE data INTO LATEST IN $1`, localFoo)

restoreDB.Exec(t, `RESTORE DATABASE data FROM LATEST IN $1`, localFoo)
require.Len(t, restoreDB.QueryStr(t, `SELECT * FROM data.foo`), 0)
require.Len(t, restoreDB.QueryStr(t, `SELECT * FROM data.foo`), 5)
require.Len(t, restoreDB.QueryStr(t, `SELECT * FROM data.bar`), 10)
require.Len(t, restoreDB.QueryStr(t, `SELECT * FROM data.baz`), 0)

before := atomic.LoadInt64(&exportReqsAtomic)
sqlDB.Exec(t, `BACKUP data.foo TO $1`, localFoo+"/tbl")
after := atomic.LoadInt64(&exportReqsAtomic)
require.Equal(t, before, after)
}

// TestExportRequestBelowGCThresholdOnDataExcludedFromBackup tests that a
Expand Down
47 changes: 34 additions & 13 deletions pkg/cmd/internal/issues/issues.go
Expand Up @@ -45,19 +45,38 @@ func enforceMaxLength(s string) string {
return s
}

var (
// Set of labels attached to created issues.
issueLabels = []string{"O-robot", "C-test-failure"}
// Label we expect when checking existing issues. Sometimes users open
// issues about flakes and don't assign all the labels. We want to at
// least require the test-failure label to avoid pathological situations
// in which a test name is so generic that it matches lots of random issues.
// Note that we'll only post a comment into an existing label if the labels
// match 100%, but we also cross-link issues whose labels differ. But we
// require that they all have searchLabel as a baseline.
searchLabel = issueLabels[1]
const (
robotLabel = "O-robot"
testFailureLabel = "C-test-failure"
)

// Label we expect when checking existing issues. Sometimes users open
// issues about flakes and don't assign all the labels. We want to at
// least require the one label to avoid pathological situations in
// which a test name is so generic that it matches lots of random
// issues. Note that we'll only post a comment into an existing label
// if the labels match 100%, but we also cross-link issues whose
// labels differ. But we require that they all have searchLabel as a
// baseline.
func searchLabel(req PostRequest) string {
if req.SkipLabelTestFailure {
return robotLabel
}

return testFailureLabel
}

// issueLabels returns the set of labels attached by default to
// created issues.
func issueLabels(req PostRequest) []string {
labels := []string{robotLabel}
if req.SkipLabelTestFailure {
return labels
}

return append(labels, testFailureLabel)
}

// context augments context.Context with a logger.
type postCtx struct {
context.Context
Expand Down Expand Up @@ -288,7 +307,7 @@ func (p *poster) post(origCtx context.Context, formatter IssueFormatter, req Pos
// that would match if it weren't for their branch label.
qBase := fmt.Sprintf(
`repo:%q user:%q is:issue is:open in:title label:%q sort:created-desc %q`,
p.Repo, p.Org, searchLabel, title)
p.Repo, p.Org, searchLabel(req), title)

releaseLabel := fmt.Sprintf("branch-%s", p.Branch)
qExisting := qBase + " label:" + releaseLabel + " -label:X-noreuse"
Expand Down Expand Up @@ -339,7 +358,7 @@ func (p *poster) post(origCtx context.Context, formatter IssueFormatter, req Pos

body := enforceMaxLength(r.buf.String())

createLabels := append(issueLabels, releaseLabel)
createLabels := append(issueLabels(req), releaseLabel)
createLabels = append(createLabels, req.ExtraLabels...)
if foundIssue == nil {
issueRequest := github.IssueRequest{
Expand Down Expand Up @@ -412,6 +431,8 @@ type PostRequest struct {
PackageName string
// The name of the failing test.
TestName string
// If set, the C-test-failure label will not be applied.
SkipLabelTestFailure bool
// The test output.
Message string
// ExtraParams contains the parameters to be included in a failure
Expand Down
25 changes: 17 additions & 8 deletions pkg/cmd/internal/issues/issues_test.go
Expand Up @@ -57,6 +57,7 @@ func TestPost(t *testing.T) {
message string
artifacts string
reproCmd string
skipTestFailure bool
reproTitle, reproURL string
}

Expand Down Expand Up @@ -151,6 +152,13 @@ test logs left over in: /go/src/github.com/cockroachdb/cockroach/artifacts/logTe
reproURL: "https://github.com/cockroachdb/cockroach",
reproTitle: "FooBar README",
},
{
name: "infrastructure-flake",
packageName: "roachtest",
testName: "TestCDC",
message: "Something went wrong",
skipTestFailure: true,
},
}

testByName := func(t *testing.T, name string) testCase {
Expand Down Expand Up @@ -353,14 +361,15 @@ test logs left over in: /go/src/github.com/cockroachdb/cockroach/artifacts/logTe
repro = HelpCommandAsLink(c.reproTitle, c.reproURL)
}
req := PostRequest{
PackageName: c.packageName,
TestName: c.testName,
Message: c.message,
Artifacts: c.artifacts,
MentionOnCreate: []string{"@cockroachdb/idonotexistbecausethisisatest"},
HelpCommand: repro,
ExtraLabels: []string{"release-blocker"},
ExtraParams: map[string]string{"ROACHTEST_cloud": "gce"},
PackageName: c.packageName,
TestName: c.testName,
Message: c.message,
SkipLabelTestFailure: c.skipTestFailure,
Artifacts: c.artifacts,
MentionOnCreate: []string{"@cockroachdb/idonotexistbecausethisisatest"},
HelpCommand: repro,
ExtraLabels: []string{"release-blocker"},
ExtraParams: map[string]string{"ROACHTEST_cloud": "gce"},
}
require.NoError(t, p.post(context.Background(), UnitTestFormatter, req))

Expand Down
@@ -0,0 +1,38 @@
post
----
----
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" label:branch-release-0.1 -label:X-noreuse: [github.Issue{Number:31, Title:"roachtest: TestCDC-similar failed [failure reason]", Labels:[github.Label{URL:"fake", Name:"C-test-failure"} github.Label{URL:"fake", Name:"O-robot"} github.Label{URL:"fake", Name:"release-0.1"}]} github.Issue{Number:30, Title:"roachtest: TestCDC failed [failure reason]", Labels:[github.Label{URL:"fake", Name:"C-test-failure"} github.Label{URL:"fake", Name:"O-robot"} github.Label{URL:"fake", Name:"release-0.1"}]}]
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" -label:branch-release-0.1: [github.Issue{Number:40, Title:"roachtest: TestCDC failed [failure reason]", Labels:[github.Label{URL:"fake", Name:"C-test-failure"} github.Label{URL:"fake", Name:"O-robot"} github.Label{URL:"fake", Name:"release-0.2"}]}]
createComment owner=cockroachdb repo=cockroach issue=30:

roachtest.TestCDC [failed](https://teamcity.example.com/buildConfiguration/nightly123/8008135?buildTab=log) on release-0.1 @ [abcd123](https://github.com/cockroachdb/cockroach/commits/abcd123):


```
Something went wrong
```
<p>Parameters: <code>GOFLAGS=race</code>
, <code>ROACHTEST_cloud=gce</code>
, <code>TAGS=deadlock</code>
</p>
<details><summary>Help</summary>
<p>

See also: [How To Investigate a Go Test Failure \(internal\)](https://cockroachlabs.atlassian.net/l/c/HgfXfJgM)
</p>
</details>
<details><summary>Same failure on other branches</summary>
<p>

- #40 roachtest: TestCDC failed [failure reason] [C-test-failure O-robot release-0.2]
</p>
</details>
<sub>

[This test on roachdash](https://roachdash.crdb.dev/?filter=status:open%20t:.*TestCDC.*&sort=title+created&display=lastcommented+project) | [Improve this report!](https://github.com/cockroachdb/cockroach/tree/master/pkg/cmd/internal/issues)
</sub>


Rendered: https://github.com/cockroachdb/cockroach/issues/new?body=roachtest.TestCDC+%5Bfailed%5D%28https%3A%2F%2Fteamcity.example.com%2FbuildConfiguration%2Fnightly123%2F8008135%3FbuildTab%3Dlog%29+on+release-0.1+%40+%5Babcd123%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Fcommits%2Fabcd123%29%3A%0A%0A%0A%60%60%60%0ASomething+went+wrong%0A%60%60%60%0A%3Cp%3EParameters%3A+%3Ccode%3EGOFLAGS%3Drace%3C%2Fcode%3E%0A%2C+%3Ccode%3EROACHTEST_cloud%3Dgce%3C%2Fcode%3E%0A%2C+%3Ccode%3ETAGS%3Ddeadlock%3C%2Fcode%3E%0A%3C%2Fp%3E%0A%3Cdetails%3E%3Csummary%3EHelp%3C%2Fsummary%3E%0A%3Cp%3E%0A%0ASee+also%3A+%5BHow+To+Investigate+a+Go+Test+Failure+%5C%28internal%5C%29%5D%28https%3A%2F%2Fcockroachlabs.atlassian.net%2Fl%2Fc%2FHgfXfJgM%29%0A%3C%2Fp%3E%0A%3C%2Fdetails%3E%0A%3Cdetails%3E%3Csummary%3ESame+failure+on+other+branches%3C%2Fsummary%3E%0A%3Cp%3E%0A%0A-+%2340+roachtest%3A+TestCDC+failed+%5Bfailure+reason%5D+%5BC-test-failure+O-robot+release-0.2%5D%0A%3C%2Fp%3E%0A%3C%2Fdetails%3E%0A%3Csub%3E%0A%0A%5BThis+test+on+roachdash%5D%28https%3A%2F%2Froachdash.crdb.dev%2F%3Ffilter%3Dstatus%3Aopen%2520t%3A.%2ATestCDC.%2A%26sort%3Dtitle%2Bcreated%26display%3Dlastcommented%2Bproject%29+%7C+%5BImprove+this+report%21%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Ftree%2Fmaster%2Fpkg%2Fcmd%2Finternal%2Fissues%29%0A%3C%2Fsub%3E%0A&title=%3Ccomment%3E
----
----
@@ -0,0 +1,32 @@
post
----
----
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" label:branch-release-0.1 -label:X-noreuse: [github.Issue{Number:30, Title:"roachtest: TestCDC failed [failure reason]", Labels:[github.Label{URL:"fake", Name:"C-test-failure"} github.Label{URL:"fake", Name:"O-robot"} github.Label{URL:"fake", Name:"release-0.1"}]} github.Issue{Number:32, Title:"roachtest: TestCDC-similar failed [failure reason]", Labels:[github.Label{URL:"fake", Name:"C-test-failure"} github.Label{URL:"fake", Name:"O-robot"} github.Label{URL:"fake", Name:"release-0.1"}]}]
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" -label:branch-release-0.1: []
createComment owner=cockroachdb repo=cockroach issue=30:

roachtest.TestCDC [failed](https://teamcity.example.com/buildConfiguration/nightly123/8008135?buildTab=log) on release-0.1 @ [abcd123](https://github.com/cockroachdb/cockroach/commits/abcd123):


```
Something went wrong
```
<p>Parameters: <code>GOFLAGS=race</code>
, <code>ROACHTEST_cloud=gce</code>
, <code>TAGS=deadlock</code>
</p>
<details><summary>Help</summary>
<p>

See also: [How To Investigate a Go Test Failure \(internal\)](https://cockroachlabs.atlassian.net/l/c/HgfXfJgM)
</p>
</details>
<sub>

[This test on roachdash](https://roachdash.crdb.dev/?filter=status:open%20t:.*TestCDC.*&sort=title+created&display=lastcommented+project) | [Improve this report!](https://github.com/cockroachdb/cockroach/tree/master/pkg/cmd/internal/issues)
</sub>


Rendered: https://github.com/cockroachdb/cockroach/issues/new?body=roachtest.TestCDC+%5Bfailed%5D%28https%3A%2F%2Fteamcity.example.com%2FbuildConfiguration%2Fnightly123%2F8008135%3FbuildTab%3Dlog%29+on+release-0.1+%40+%5Babcd123%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Fcommits%2Fabcd123%29%3A%0A%0A%0A%60%60%60%0ASomething+went+wrong%0A%60%60%60%0A%3Cp%3EParameters%3A+%3Ccode%3EGOFLAGS%3Drace%3C%2Fcode%3E%0A%2C+%3Ccode%3EROACHTEST_cloud%3Dgce%3C%2Fcode%3E%0A%2C+%3Ccode%3ETAGS%3Ddeadlock%3C%2Fcode%3E%0A%3C%2Fp%3E%0A%3Cdetails%3E%3Csummary%3EHelp%3C%2Fsummary%3E%0A%3Cp%3E%0A%0ASee+also%3A+%5BHow+To+Investigate+a+Go+Test+Failure+%5C%28internal%5C%29%5D%28https%3A%2F%2Fcockroachlabs.atlassian.net%2Fl%2Fc%2FHgfXfJgM%29%0A%3C%2Fp%3E%0A%3C%2Fdetails%3E%0A%3Csub%3E%0A%0A%5BThis+test+on+roachdash%5D%28https%3A%2F%2Froachdash.crdb.dev%2F%3Ffilter%3Dstatus%3Aopen%2520t%3A.%2ATestCDC.%2A%26sort%3Dtitle%2Bcreated%26display%3Dlastcommented%2Bproject%29+%7C+%5BImprove+this+report%21%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Ftree%2Fmaster%2Fpkg%2Fcmd%2Finternal%2Fissues%29%0A%3C%2Fsub%3E%0A&title=%3Ccomment%3E
----
----
@@ -0,0 +1,38 @@
post
----
----
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" label:branch-release-0.1 -label:X-noreuse: []
searchIssue repo:"cockroach" user:"cockroachdb" is:issue is:open in:title label:"O-robot" sort:created-desc "roachtest: TestCDC failed" -label:branch-release-0.1: []
getBinaryVersion: result v3.3.0
listMilestones owner=cockroachdb repo=cockroach: result [github.Milestone{Number:2, Title:"3.3"} github.Milestone{Number:1, Title:"3.2"}]
createIssue owner=cockroachdb repo=cockroach:
github.IssueRequest{Labels:["O-robot" "branch-release-0.1" "release-blocker"], Milestone:2}

roachtest: TestCDC failed

roachtest.TestCDC [failed](https://teamcity.example.com/buildConfiguration/nightly123/8008135?buildTab=log) on release-0.1 @ [abcd123](https://github.com/cockroachdb/cockroach/commits/abcd123):


```
Something went wrong
```
<p>Parameters: <code>GOFLAGS=race</code>
, <code>ROACHTEST_cloud=gce</code>
, <code>TAGS=deadlock</code>
</p>
<details><summary>Help</summary>
<p>

See also: [How To Investigate a Go Test Failure \(internal\)](https://cockroachlabs.atlassian.net/l/c/HgfXfJgM)
</p>
</details>
/cc @cockroachdb/idonotexistbecausethisisatest
<sub>

[This test on roachdash](https://roachdash.crdb.dev/?filter=status:open%20t:.*TestCDC.*&sort=title+created&display=lastcommented+project) | [Improve this report!](https://github.com/cockroachdb/cockroach/tree/master/pkg/cmd/internal/issues)
</sub>


Rendered: https://github.com/cockroachdb/cockroach/issues/new?body=roachtest.TestCDC+%5Bfailed%5D%28https%3A%2F%2Fteamcity.example.com%2FbuildConfiguration%2Fnightly123%2F8008135%3FbuildTab%3Dlog%29+on+release-0.1+%40+%5Babcd123%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Fcommits%2Fabcd123%29%3A%0A%0A%0A%60%60%60%0ASomething+went+wrong%0A%60%60%60%0A%3Cp%3EParameters%3A+%3Ccode%3EGOFLAGS%3Drace%3C%2Fcode%3E%0A%2C+%3Ccode%3EROACHTEST_cloud%3Dgce%3C%2Fcode%3E%0A%2C+%3Ccode%3ETAGS%3Ddeadlock%3C%2Fcode%3E%0A%3C%2Fp%3E%0A%3Cdetails%3E%3Csummary%3EHelp%3C%2Fsummary%3E%0A%3Cp%3E%0A%0ASee+also%3A+%5BHow+To+Investigate+a+Go+Test+Failure+%5C%28internal%5C%29%5D%28https%3A%2F%2Fcockroachlabs.atlassian.net%2Fl%2Fc%2FHgfXfJgM%29%0A%3C%2Fp%3E%0A%3C%2Fdetails%3E%0A%2Fcc+%40cockroachdb%2Fidonotexistbecausethisisatest%0A%3Csub%3E%0A%0A%5BThis+test+on+roachdash%5D%28https%3A%2F%2Froachdash.crdb.dev%2F%3Ffilter%3Dstatus%3Aopen%2520t%3A.%2ATestCDC.%2A%26sort%3Dtitle%2Bcreated%26display%3Dlastcommented%2Bproject%29+%7C+%5BImprove+this+report%21%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Ftree%2Fmaster%2Fpkg%2Fcmd%2Finternal%2Fissues%29%0A%3C%2Fsub%3E%0A&title=roachtest%3A+TestCDC+failed
----
----

0 comments on commit b1db60c

Please sign in to comment.