Search code examples
goetcd

Inconsistent internal package errors with go get


I'm trying to go get go.etcd.io/etcd/tools/benchmark.

Previously this has worked, flawlessly. However when I try to do it currently I have alternatively got no errors and I've had it fail on me with:

go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/balancer_conn_wrappers.go:28:2: use of internal package google.golang.org/grpc/internal/buffer not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:49:2: use of internal package google.golang.org/grpc/internal/resolver/dns not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:50:2: use of internal package google.golang.org/grpc/internal/resolver/passthrough not allowed

The first time I ran it on a new go-1.13 installation it worked, but the following times it has failed as above.

The repo has not changed as far as I can tell in the past 8 months and I've tried on various golang versions but all so far have failed (bar the go-1.13 on that first try...).

Any assistance debugging this would be greatly appreciated!


Solution

  • I have both a workaround and an official fix.

    The workaround:

    Here I defined a go.mod which then used a previous version of the library.

    The official fix:

    This was fixed upstream and thus no one else should experience this.