-
Notifications
You must be signed in to change notification settings - Fork 18k
x/build/cmd/coordinator: trybots don't work on golang.org/dl repo #35581
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
For part 1 of this issue, the problem is as follows. In func (st *buildStatus) runSubrepoTests() (remoteErr, err error) {
[...]
// Determine if we're invoked in module mode.
// If using module mode, the absolute path to the go.mod of the main module.
// If using GOPATH mode, the empty string.
goMod, err := st.goMod(importPathOfRepo(st.SubName), goroot, gopath)
if err != nil {
return nil, fmt.Errorf("failed to determine go env GOMOD value: %v", err)
}
[...] A failure to determine go env GOMOD is currently being reported as a "communications failure" rather than a "real test failure". This was chosen because we didn't know of a way in which The reason it's failing now is because the directory corresponding to the root of the module does not exist (for some reason, determining that reason is part 2 of this issue):
It is intentional to keep retrying "communications failures" forever, because the expectation is that they should eventually succeed. There is a special case where some repeated communication errors are promoted to terminal errors: // If a build fails multiple times due to communication
// problems with the buildlet, assume something's wrong with
// the buildlet or machine and fail the build, rather than
// looping forever. This promotes the err (communication
// error) to a remoteErr (an error that occurred remotely and
// is terminal).
if rerr := st.repeatedCommunicationError(err); rerr != nil {
remoteErr = rerr
err = nil
doneMsg = "communication error to buildlet (promoted to terminal error): " + rerr.Error()
fmt.Fprintf(st, "\n%s\n", doneMsg)
} In this case, it's a bug in coordinator that's causing (It is an option to add a "knownInternalCoordinatorBugError" helper that would promote a "failed to determine go env GOMOD value" error to be terminal, but I don't think it's worth doing at this time.) So, what's left here is to understand why part 2 is happening and fix it. |
I see where the problem for part 2 is. One of the first steps in // Check out the provided sub-repo to the buildlet's workspace.
// Need to do this first, so we can run go env GOMOD in it.
err = buildgo.FetchSubrepo(st.ctx, st, st.bc, st.SubName, st.SubRev)
if err != nil {
return nil, err
} That call is placing the The fix is trivial. |
Change https://golang.org/cl/212023 mentions this issue: |
I'm seeing now that this isn't quite true, so there is some room for improvement here. I opened issue #36226 about it for tracking purposes, but it's not a high priority. |
There are two parts to this issues:
The trybot builds start, fail, and keep retrying indefinitely. It's been 2 hours since https://go-review.googlesource.com/c/dl/+/207097/1#message-2732030f20d3db705eb32433ddacbb459f630a61, and it's still doing this:
It should give up at some point and report a failure.
The builds fail due to something being misplaced, likely because golang.org/dl is the only repo that doesn't have the 'x' element in the import path.
The second issue is related to #30852. It seems a little more needs to be done for testing in module mode.
/cc @bcmills @bradfitz
The text was updated successfully, but these errors were encountered: