Skip to content

cmd/go/internal/modcmd: download with -json flag doesn't print JSON objects to stdout for some module download errors #69510

Open
@dmitshur

Description

@dmitshur

Go version

go version go1.23.1 darwin/arm64

Output of go env -changed in your module/workspace


GOPROXY='http://127.0.0.1'

What did you do?

https://pkg.go.dev/cmd/go#hdr-Download_modules_to_local_cache says:

The -json flag causes download to print a sequence of JSON objects to standard output, describing each downloaded module (or failure), corresponding to this Go struct: type Module struct { ... }

It seems that doesn't always happen for some networking errors observed in the Go build system (build 8736907273916323825 being one example). Consider a minimal set of steps which seems to reproduce the problem:

$ export GOPROXY=http://127.0.0.1  # simulate an error downloading modules
$ cd $(mktemp -d)
$ printf 'module test\nrequire example.com v0.0.0\n' > go.mod
$ go mod download -json

What did you see happen?

No JSON is printed to stdout:

$ go mod download -json 2>/dev/null
$

What did you expect to see?

JSON is printed to stdout, describing the error:

$ go mod download -json 2>/dev/null
{
	"Path": "example.com",
	"Version": "v0.0.0",
	"Error": "Get \"http://127.0.0.1/example.com/@v/v0.0.0.mod\": dial tcp 127.0.0.1:80: connect: connection refused"
}
$

CC @matloob, @samthanawalla.

Metadata

Metadata

Assignees

Labels

GoCommandcmd/goNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions