Skip to content

roachtest: extend github issue poster to include ip node mapping#153962

Merged
craig[bot] merged 1 commit intocockroachdb:masterfrom
williamchoe3:wchoe/extend-GH-issue-poster-to-include-ip-node-mapping
Nov 18, 2025
Merged

roachtest: extend github issue poster to include ip node mapping#153962
craig[bot] merged 1 commit intocockroachdb:masterfrom
williamchoe3:wchoe/extend-GH-issue-poster-to-include-ip-node-mapping

Conversation

@williamchoe3
Copy link
Copy Markdown
Contributor

@williamchoe3 williamchoe3 commented Sep 23, 2025

Resolves #138356

Motivation

Quality of life improvement, previously to find this information, you would need to find the name of the cluster intest.log, then use that cluster name to find it's cluster creation log in {artifacts_dir}/_runner-logs/cluster-create.

Approach

Get's node ip info from roachprod's cloud.Cluster
Similar to #151850
In the test cleanup phase in inspectArtifacts added a new function gatherNodeIpMapping which is best effort to gather the cluster information in the log.

  • First we need to find the right log file given that there could be retries for cluster creation which creates additional log files. Given the naming convention, I opted to the just sort the log files that contained the cluster name. I realized a bit later though that because lexicographical sorting on numerical strings, this approach only works if retry attempts is <10. I was trying to avoid unnecessary string parsing if not needed. Also I would assume cluster retry attempts >=10 would be rare / too high of a retry limit to be ever set.
    After finding the correct file, use regex to find the string in the log. Then store it in test_impl, then pass to issues.Post and I added a new case for parsing out the IP table
  • The regex is flexible to number of columns so we can change the table fields without having to modify the regex

Adds Cluster Node IP information to github issue e.g.

| Node | Private IP | Public IP | Machine Type |
| --- | --- | --- | --- |
| willchoe-1758834520-01-n1cpu4-0001 | 10.142.0.2 | 34.139.44.53 | n2-standard-4 |
  • Opted for keep the VM name as is vs. replacing with something like n1. My thinking was that if people wanted to reference the vm in logs, it would be nice to keep the names consistent, but if folks want this as n1 / the vm name isn't helpful then happy to change to n1, etc.

Also added a new node-ips.log that will also contain this table

Notes

Saw "cluster-create" being used as a magic string so created a const for it clusterCreateDir = "cluster-create"

Verification

Added datadriven test

Manual Verification
Verified the renderer in issues was formatting the new code block correctly in debug mode, holding off on generating more debug github issues, but can if folks want to see

@cockroach-teamcity
Copy link
Copy Markdown
Member

This change is Reviewable

@williamchoe3 williamchoe3 force-pushed the wchoe/extend-GH-issue-poster-to-include-ip-node-mapping branch 2 times, most recently from aca08a3 to a1c5008 Compare September 23, 2025 20:13
@williamchoe3 williamchoe3 marked this pull request as ready for review September 23, 2025 20:15
@williamchoe3 williamchoe3 requested review from a team as code owners September 23, 2025 20:15
@williamchoe3 williamchoe3 requested review from nameisbhaskar and shailendra-patel and removed request for a team September 23, 2025 20:15
@williamchoe3
Copy link
Copy Markdown
Contributor Author

williamchoe3 commented Sep 23, 2025

Node Private IP Public IP
n1 10.142.0.219 35.227.28.42

Note, node id and the ips should suffice. The rest of the info looks redundant.

@srosenberg from your comment here #153955 (comment)
Fetching the entire table and storing it as a string was the "simple" approach so I went for that. If some columns aren't wanted I can take them out, but the only one that seems redundant to me is CPU Arch

@williamchoe3 williamchoe3 changed the title ip node mapping roachtest: extend github issue poster to include ip node mapping Sep 23, 2025
Copy link
Copy Markdown
Contributor

@DarrylWong DarrylWong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also (selfishly) like it to save the output of this mapping as a log. My general flow for investigating roachtests is that github info is just for cursory glances but once I start doing a deep dive (e.g. need to start matching ips to things in cockroach.log), I generally just stick to TeamCity and wouldn't want to go back to github to find the mapping.

Cluster Node to Ip Mapping:

```
Name DNS Private IP Public IP Machine Type CPU Arch CPU Family Provision Model
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: can we put nodeID, Private IP, Public IP?, and Machine Type as the first four fields? i.e. so I can see what I care about 99% of the time without scrolling?

Arch is already listed in the github issue (and shouldn't differ across machines in a test). The average engineer debugging a roachtest probably doesn't care about CPU Family or Provision Model either.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, just saw your other comment about Stan mentioning something similar. My argument against including all the fields is that this is just a convenience mapping so we don't want to overload it with information that normally isn't pertinent to investigation. Remember that we already gather vm_specs which has already has all of this information already.

Copy link
Copy Markdown
Member

@srosenberg srosenberg Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We definitely don't need the DNS column, and the Name column can be replaced by the Node column; nodes are always canonically named, i.e., n1, n2, etc. Thus, the most important are the three columns as illustrated in [1].

[1] #153962 (comment)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redid my approach, no more log parsing. reference the new description for the new table. I'm open to changing the node names btw, there's a bullet in the description with my thoughts on it

}

// gatherNodeIpMapping attempts to gather cluster node to ip map from
// _runner-logs/cluster-create
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The VM information should already be available through clusterImpl -> getCachedCluster() -> cloud.Cluster -> VMs. Was there a reason to opt for parsing the logs here which might break if we change the output of the logs?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea no good reason 😅 was mainly reading Cluster Interface's methods and the test_runner.go's cluster creation code path so didn't realize there was all this built out utility already in clusterImpl, redoing my approach will undraft the PR when done

@williamchoe3 williamchoe3 marked this pull request as draft September 25, 2025 16:01
@DarrylWong
Copy link
Copy Markdown
Contributor

I put out #154164 so hopefully 🤞 you should be able to test your changes without creating actual github issues.

@williamchoe3 williamchoe3 marked this pull request as ready for review September 25, 2025 21:29
var reproRE = regexp.MustCompile(`(?s)( *rsg_test.go:\d{3}: To reproduce, use schema:)`)

var roachtestNodeFatalRE = regexp.MustCompile(`(?ms)\A(.*?\n)((?:^F\d{6}\b[^\n]*(?:\n|$))+)`)
var roachtestNodeToIpRE = regexp.MustCompile(`(?m)^[[:space:]]*\|(?:[^|\n]*\|)+[[:space:]]*\n^[[:space:]]*\|(?:[[:space:]]*:?-{3,}:?[[:space:]]*\|)+[[:space:]]*\n(?:^[[:space:]]*\|(?:[^|\n]*\|)+[[:space:]]*(?:\n|$))+`)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: this regex is an eye sore. A comment with an example would be helpful.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// nodeToIpRoachtestRE matches an entire Markdown table block
// - including header, separator, and data rows:
// - handles an arbitrary number of columns
//
// | Node | Private IP | Public IP | Machine Type |
// | --- | --- | --- | --- |
// | node-0001 | 1.1.1.0 | 1.1.1.1 | n2-standard-4 |
var nodeToIpRoachtestRE = regexp.MustCompile(...)

for _, row := range data[1:] {
if len(data[0]) != len(row) {
return "", errors.Errorf("row %d has %d columns, expected %d",
len(data)-1, len(row), len(data[0]))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

len(data)-1 is not the ith row.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed 😅

out, err := ToMarkdownTable(tt.input)
if err != nil {
if tt.shouldSucceed {
t.Errorf("ToMarkdownTable() failed when expected to succeed: error = %v", err)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might as well check for the expected err since the above would also output the last row index in case of (column number) mismatch.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added dedicated error vars and checking in the type in the unit test


output := fmt.Sprintf("%s\ntest artifacts and logs in: %s", failureMsg, t.ArtifactsDir())
params := getTestParameters(t, issueInfo.cluster, issueInfo.vmCreateOpts)
// githubMsg may contain additional info not needed in output
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the "not needed" modifier is confusing; the two outputs are mutually disjoint. Perhaps renaming output to stdoutMsg would suffice to disambiguate?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// Construct stdoutMsg which will be shouted and githubMsg which will
// be passed to github.MaybePost to be formatted in the github issue
// body

Renamed some vars to make what's going on more clear, so now failureMsg will be the base for both stdoutMsg & githubMsg

t.L().Printf("Attempting to gather ip node mapping")
ipNodeMapOut, err := gatherNodeIpMapping(t, c)
if err != nil {
if joinErr := errors.Join(inspectArtifactsErr, err); joinErr != nil {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

err != nil implies that errors.Join(inspectArtifactsErr, err) != nil. The nested if is redundant.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense, removed the redundant check

@williamchoe3 williamchoe3 marked this pull request as draft October 3, 2025 16:13
@williamchoe3 williamchoe3 force-pushed the wchoe/extend-GH-issue-poster-to-include-ip-node-mapping branch 2 times, most recently from 471fd68 to ae22cce Compare October 7, 2025 17:55
@williamchoe3 williamchoe3 marked this pull request as ready for review October 7, 2025 18:33
test artifacts and logs in: artifacts/roachtest/manual/monitor/test-failure/node-fatal-explicit-monitor/cpu_arch=arm64/run_1
F250826 19:49:07.194443 3106 sql/sem/builtins/builtins.go:6063 ⋮ [T1,Vsystem,n1,client=127.0.0.1:54552,hostssl,user=‹roachprod›] 250 force_log_fatal(): ‹oops›
`)
case "error-with-ip-node-info":
Copy link
Copy Markdown
Contributor

@DarrylWong DarrylWong Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems a bit off to me that we are encoding these as errors. Shouldn't this be just be an additional string appended to the message? That way we can test how ip node info interacts with other failures, e.g. node-fatal, which also seems like it shouldn't be an error?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems a bit off to me that we are encoding these as errors.

Yea, I agree it's all a bit convoluted, and not just in the unit test logic. I think it's because the message parameter is conflated as an error message and not as just a generic message.

So before my changes, github.MaybePost and subsequently createPostRequest messsage parameter was just the error message. So when I added the node-fatal, it sort of made sense that it was it's own error so it's additional information i.e. the node logs could just be appended with the error. But with the ip node logic, that thinking sort of breaks down because it's additional information that we want to just append to every type of message or error message.

I think a better approach to all of this would be to change the issues.PostRequest struct to take in an additional []string field in addition to message, something like info that would contain the fatal node logs, and the ip node info, etc. Then in unitTestFormatterTyp.Body, could parse each element in info. Basically, it doesn't seem like issues was originally written to pass in "additional info", only the error.

As for the unit test logic, the error message message is just being formed from the errors i.e. refError that's passed in the first step.

				// See: `formatFailure` which formats failures for roachtests. Try to
				// follow it here.
				var b strings.Builder
				for i, f := range testCase.failures {
					if i > 0 {
						fmt.Fprintln(&b)
					}
					// N.B. Don't use %+v here even though roachtest does. We don't
					// want the stack trace to be outputted which will differ based
					// on where this test is run and prone to flaking.
					fmt.Fprintf(&b, "%v", f.squashedErr)
				}
				message := b.String()

Then we're calling github.createPostRequest with that message. This doesn't really match what test_runner.go is doing anymore because I added the string appending logic for ipnode info to append to message before github.createPostRequest is called.

I was initially thinking that if we're just testing the format, then passing in a refError with what I wanted to format would suffice.

Instead I can add a step to pass along the ip node info so would just be something like message.append(additionalInfo) and remove the case "error-with-ip-node-info"

Long comment but just wanted to also address why I think a lot of this feels a bit "hacky" from the random string appends to the reliance on long confusing regex strings in issues

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tl;dr:

Instead I can add a step to pass along the ip node info so would just be something like message.append(additionalInfo) and remove the case "error-with-ip-node-info"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, we should refactor this because it gets even messier; i.e., more cases (and obscure regexes). Note that we already have the ExtraParams map in the PostRequest, but it serves a different purpose. Maybe another map, e.g., Diagnostics map[string]string would do the trick?

Let's write up an issue for it and address it in a subsequent PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#154274

Wrote this up, mentioned it in a comment in the code in a TODO, kind of just mind dumped, if I end up doing it I have enough context, but mainly made it verbose for others / if someone else ends up doing it

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean #157021, right?

output := fmt.Sprintf("%s\ntest artifacts and logs in: %s", failureMsg, t.ArtifactsDir())
params := getTestParameters(t, issueInfo.cluster, issueInfo.vmCreateOpts)
githubMsg := output
if testGithubMsg := t.getGithubMessage(); testGithubMsg != "" {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why can't t.getGithubMessage just call both getGithubIpToNodeMapping and getGithubFatalLogs then do the message construction? Seems cleaner to have the test runner not be aware of the github message details.

// without a regex change
table = append(table, []string{"Node", "Private IP", "Public IP", "Machine Type"})
for _, vmInstance := range cachedCluster.VMs {
table = append(table, []string{vmInstance.Name, vmInstance.PrivateIP, vmInstance.PublicIP, vmInstance.MachineType})
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In hindsight, we probably don't need the machine type since its static, i.e. I can just look at the test to figure it out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, machine type is easily inferred and not really relevant in majority of (triage) cases. Let's remove.

testClusterLogger, err := c.l.ChildLogger("node-ips", logger.QuietStderr, logger.QuietStdout)
if err != nil {
t.L().Printf("unable to create logger %s: %s", "node-ips", err)
return "", err
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be fine to swallow the error here and continue, we will at least get the mapping in the github issue if one exists

// Works with local and remote node clusters because we will always download
// the artifacts if there's a test failure (except for timeout)
cmd := exec.Command("grep", args...)
cmd := exec.Command(command, args...)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: change seems redundant since command is never modified, makes it marginally harder to follow

filePattern := "logs/*unredacted/cockroach*.log"
// *unredacted captures patterns for single node and multi-node clusters
// e.g. unredacted, 1.unredacted
// * wildcard to capture patterns for single node and multi-node clusters
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: not a big deal but some of these fatal node log fixes could've been their own commit

@williamchoe3
Copy link
Copy Markdown
Contributor Author

Running E2E (w/ dry run) bc test_runner.go was just changed, will also kick off a smoke test ci run

@williamchoe3
Copy link
Copy Markdown
Contributor Author

@williamchoe3 williamchoe3 force-pushed the wchoe/extend-GH-issue-poster-to-include-ip-node-mapping branch from 1b28583 to e715511 Compare November 6, 2025 15:28
case "ip-node-info":
testCase.message = fmt.Sprintf("%s\n%s", testCase.message, `| Node | Private IP | Public IP | Machine Type |
| --- | --- | --- | --- |
| teamcity-1758834520-01-n1cpu4-0001 | 10.142.0.2 | 34.139.44.53 | n2-standard-4 |`)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One tiny nit... Could we swap the positions of public and private ips? In most infra flakes I can think of, a public rather than private ip is implicated. So, I worry about the case where the cluster name is very long and the public ip is obscured by the scrollbar; i.e., this optimizes for (clusterName, publicIp) to be always visible, even on tiny screens :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure np

r.CodeBlock("", fnr.Message)
r.Escaped("Fatal entries found in Cockroach logs:")
r.CodeBlock("", fnr.FatalLogs)
if nodeIpMap, ok := data.CondensedMessage.NodeToIpMappingRoachtest(); ok {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're inside the case for FatalNodeRoachtest. How can the message be that and also NodeToIpMappingRoachtest?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea so this is another consequence of doing the message parsing all in one go instead of more modular (see long comment #153962 (comment))

This is the case where we both have fatal node logs and ip node info. I went ahead with this hacky way because i wanted to keep my changes to the if else if else control chain as minimal as possible. I would have liked if all these conditionals where just if clauses instead of else if clauses, not sure if the other formatters potentially evaluate to true multiple times

I thought I had examples of these somewhere in this PR but can't find the comment but this is the corresponding datadriven test for this case https://github.com/williamchoe3/cockroach/blob/e7155110ece307284e073a7e0d3c871d830411de/pkg/cmd/roachtest/testdata/github/node_fatal_with_ip_node_info

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see it's effectively demultiplexing. But then we have a bug in getGithubMessage which overwrites instead of appends, in the case of fatal logs?

Copy link
Copy Markdown
Contributor Author

@williamchoe3 williamchoe3 Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

	githubMsg := failureMsg
	if githubFatalLogs := t.getGithubFatalLogs(); githubFatalLogs != "" {
		githubMsg = fmt.Sprintf("%s\n%s", githubMsg, githubFatalLogs)
	}
	if githubIpToNodeMapping := t.getGithubIpToNodeMapping(); githubIpToNodeMapping != "" {
		githubMsg = fmt.Sprintf("%s\n%s", githubMsg, githubIpToNodeMapping)
	}

I'm doing a weird append, I think i did it this way because I needed the\n prepended to githubMsg, but also a \n char inbetween the two info types if they both existed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this logic looked better to me before, but on 2nd pass it does look confusing, I can just use append if that makes things clearer

		githubMsg = append(githubMsg + '\n' + githubIpToNodeMapping)
		...
		githubMsg = append('\n', githubMsg)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, 🤦. Ignore me, somehow I missed githubMsg in the RHS (of the assignment).

@williamchoe3
Copy link
Copy Markdown
Contributor Author

e.g.

https://github.com/cockroachdb/cockroach/issues/new?body=roachtest.github_test+%5Bfailed%5D%28%29+on+test_branch+%40+%5Btest_SHA%5D%28%29%3A%0A%0AFailed+with%3A%0A%0A%60%60%60%0Aoops+%5Bowner%3Dtest-eng%5D+%5Bowner%3Dsql-foundations%5D%0A%60%60%60%0ACluster+Node+to+Ip+Mapping%3A%0A%7C+Node+%7C+Public+IP+%7C+Private+IP+%7C%0A%7C+---+%7C+---+%7C+---+%7C%0A%7C+teamcity-1758834520-01-n1cpu4-0001+%7C+34.139.44.53+%7C+10.142.0.2+%7C%0A%0AParameters%3A%0A+-+%3Ccode%3Earch%3Damd64%3C%2Fcode%3E%0A+-+%3Ccode%3Ecloud%3Dgce%3C%2Fcode%3E%0A+-+%3Ccode%3EcoverageBuild%3Dfalse%3C%2Fcode%3E%0A+-+%3Ccode%3Ecpu%3D4%3C%2Fcode%3E%0A+-+%3Ccode%3Eencrypted%3Dfalse%3C%2Fcode%3E%0A+-+%3Ccode%3Efs%3Dext4%3C%2Fcode%3E%0A+-+%3Ccode%3ElocalSSD%3Dtrue%3C%2Fcode%3E%0A+-+%3Ccode%3EruntimeAssertionsBuild%3Dfalse%3C%2Fcode%3E%0A+-+%3Ccode%3Essd%3D0%3C%2Fcode%3E%0A%3Cdetails%3E%3Csummary%3EHelp%3C%2Fsummary%3E%0A%3Cp%3E%0A%0A%0ASee%3A+%5Broachtest+README%5D%28https%3A%2F%2Fgithub.com%2Fcockroachdb%2Fcockroach%2Fblob%2Fmaster%2Fpkg%2Fcmd%2Froachtest%2FREADME.md%29%0A%0A%0A%0ASee%3A+%5BHow+To+Investigate+%5C%28internal%5C%29%5D%28https%3A%2F%2Fcockroachlabs.atlassian.net%2Fl%2Fc%2FSSSBr8c7%29%0A%0A%0A%0ASee%3A+%5BGrafana%5D%28https%3A%2F%2Fgo.crdb.dev%2Froachtest-grafana%2F%2Fgithub-test%2F1689957243000%2F1689957853000%29%0A%0A%3C%2Fp%3E%0A%3C%2Fdetails%3E%0A%2Fcc+%40cockroachdb%2Ftest-eng%0A%3Csub%3E%0A%0A%5BThis+test+on+roachdash%5D%28https%3A%2F%2Froachdash.crdb.dev%2F%3Ffilter%3Dstatus%3Aopen%2520t%3A.%2Agithub_test.%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%2Fbazci%2Fgithubpost%2Fissues%29%0A%0A%3C%2Fsub%3E%0A%0A------%0ALabels%3A%0A-+%3Ccode%3EO-roachtest%3C%2Fcode%3E%0A-+%3Ccode%3EC-test-failure%3C%2Fcode%3E%0A-+%3Ccode%3Erelease-blocker%3C%2Fcode%3E%0A-+%3Ccode%3ET-testeng%3C%2Fcode%3E%0A&template=none&title=roachtest%3A+github_test+failed

image

Quality of life improvement, previously to find this information, you would need
to find the name of the cluster in test.log, then use that cluster name to find
it's cluster creation log in artifacts_dir/_runner-logs/cluster-create.  Now
this information will be available in the github issue.

Resolves cockroachdb#138356

Epic: None
Release note: None
@williamchoe3 williamchoe3 force-pushed the wchoe/extend-GH-issue-poster-to-include-ip-node-mapping branch from 1528386 to 0eb1ca1 Compare November 6, 2025 21:44
@williamchoe3
Copy link
Copy Markdown
Contributor Author

@williamchoe3
Copy link
Copy Markdown
Contributor Author

tftr!

bors r=srosenberg,DarrylWong

@craig
Copy link
Copy Markdown
Contributor

craig bot commented Nov 18, 2025

@craig craig bot merged commit eb2dbf6 into cockroachdb:master Nov 18, 2025
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

roachtest: extend GH issue poster to include ip->node mapping

4 participants