go: x/tools/gopls: too slow on large package
What version of Go are you using (go version)?
$ go version go version go1.12.7 darwin/amd64
Does this issue reproduce with the latest release?
Yes, it does.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env GOARCH="amd64" GOBIN="/Users/svanharmelen/GoCode/bin" GOCACHE="/Users/svanharmelen/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/svanharmelen/GoCode" GOPROXY="" GORACE="" GOROOT="/usr/local/Cellar/go/1.12.7/libexec" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.12.7/libexec/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/svanharmelen/GoCode/src/github.com/terraform-providers/terraform-provider-aws/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/bz/cgd8_ttn1tx_6f8mt_ys06qjgxjxn1/T/go-build916468534=/tmp/go-build -gno-record-gcc-switches -f no-common"
What did you do?
$ git clone https://github.com/terraform-providers/terraform-provider-aws $ cd terraform-provider-aws $ gopls -rpc.trace -v check aws/resource_aws_rds_cluster.go
What did you expect to see?
A successful check without errors. What let me to start debugging is actually that completion started to take very long (several seconds). I assume this will at least be part of the reason, but regardless these errors are unexpected.
What did you see instead?
➜ workspace git clone https://github.com/terraform-providers/terraform-provider-aws
Cloning into 'terraform-provider-aws'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 103996 (delta 3), reused 8 (delta 2), pack-reused 103986
Receiving objects: 100% (103996/103996), 90.54 MiB | 22.82 MiB/s, done.
Resolving deltas: 100% (67391/67391), done.
Checking out files: 100% (6432/6432), done.
➜ workspace cd terraform-provider-aws
➜ terraform-provider-aws git:(master) gopls -rpc.trace -v check aws/resource_aws_rds_cluster.go
2019/08/07 22:13:22 Info:Build info
----------
golang.org/x/tools/gopls v0.1.2
golang.org/x/tools/gopls@v0.1.3 h1:CB5ECiPysqZrwxcyRjN+exyZpY0gODTZvNiqQi3lpeo=
golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/tools@v0.0.0-20190710153321-831012c29e42 h1:4IOeC7p+OItq3+O5BWkcmVu2uBe3jekXau5S4QZX9DU=
Go info
-------
go version go1.12.7 darwin/amd64
GOARCH="amd64"
GOBIN="/Users/svanharmelen/GoCode/bin"
GOCACHE="/Users/svanharmelen/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/svanharmelen/GoCode"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.7/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.7/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/svanharmelen/workspace/terraform-provider-aws/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/bz/cgd8_ttn1tx_6f8mt_ys06qjgxjxn1/T/go-build545681017=/tmp/go-build -gno-record-gcc-switches -f
no-common"
2019/08/07 22:13:35 Error:unable to check package for file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/resource_aws_rds_cluster.go: failed to cache file file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/datasync.go: no AST for file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/datasync.go
2019/08/07 22:13:38 Error:unable to check package for file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/resource_aws_rds_cluster.go: failed to cache file file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/datasync.go: no AST for file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/datasync.go
/Users/svanharmelen/workspace/terraform-provider-aws/aws/resource_aws_rds_cluster.go: file:///Users/svanharmelen/workspace/terraform-provider-aws/aws/resource_aws_rds_cluster.go is not part of a package
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 26 (14 by maintainers)
Thanks @kamilturek; just going through old performance bugs now that gopls@v0.12.0-pre.1 has been released (a major rewrite for memory usage and performance).
Closing this as resolved.