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
x/tools/gopls: saving is very slow with the latest update #45092
Comments
Can you please share your |
Here's a log capture: gopls-slow-save.log. This is the result of clearing the log, changing the indentation of a single line, re-saving the file, and waiting for the file to be saved. This particular save operation took around around 23 seconds to complete. I do have a lot of files under the top-level project directory in case that's what's causing this. The count from Edit: And the Go-specific lines of my Visual Studio Code "go.lintOnSave": "off",
"go.vetOnSave": "off",
"go.formatTool": "goimports",
"go.languageServerFlags": [
"-rpc.trace"
],
"[go]": {
"editor.insertSpaces": false,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}, |
Also experiencing the same issue with a large codebase[1] I'm currently attempting to downgrade gopls to identify when the slowdown was introduced. |
Change https://golang.org/cl/303149 mentions this issue: |
Change https://golang.org/cl/303150 mentions this issue: |
Thank you for these reports. We were able to debug this issue using the juju repository, and we'll have a patch release out to fix this soon. You can try it out now by downloading |
…om code actions With -mod=readonly, all go.mod diagnostics are covered by go get quick fixes on import statements, so we don't need to run `go mod tidy` on save for Go files. The real issue with this bug is the call to WorkspacePackages, which type checks every package in the workspace. Fixes golang/go#45092 Change-Id: Ibb82a3e58ec345ebdb67c0cbef5e029dce2d5a30 Reviewed-on: https://go-review.googlesource.com/c/tools/+/303149 Trust: Rebecca Stambler <rstambler@golang.org> Run-TryBot: Rebecca Stambler <rstambler@golang.org> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com> (cherry picked from commit 2c4a886) Reviewed-on: https://go-review.googlesource.com/c/tools/+/303150
I just updated and it appears to be fixed! Thanks so much for the fix. |
0.6.9 This is a patch release to fix golang/go#45092. 0.6.8 This is a patch release to fix golang/go#45075. 0.6.7 New analyzers The unusedwrite and nilness analyzers are now available, but they are disabled by default. Note that enabling them permanently may significantly increase memory usage. You can configure analyzers through the analyses setting. Improved hover with time.Duration Hover for any constant of type time.Duration is shown both in nanoseconds and as a human-readable string. Fixes A full list of all issues fixed can be found in the gopls/v0.6.7 milestone. To report a new problem, please file a new issue at https://golang.org/issues/new.
Change https://golang.org/cl/356255 mentions this issue: |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
I use the Go extension in Visual Studio Code (v0.23.2) which uses gopls (v0.6.7) on a project with a single dependency.
What did you expect to see?
The Go extension formats code and automatically inserts missing imports whenever I save. I expect this to feel instant, and it has been instant in the past.
What did you see instead?
Something changed recently. Now saving a Go file takes a really long time (e.g. 7 seconds) and causes Visual Studio Code to show a
Saving 'resolver.go': Getting code actions from ''Go'' (configure).
message in the corner. This is really breaking my flow because it means I constantly have to wait in between adjusting code and trying it out.I would love for this to be fixed of course, but I would also love to have a workaround in the meantime. For example, I assume this is due to automatic import insertion and not due to code formatting. Is there a way I can disable the slow part but just keep code formatting on save? Maybe there is some cache somewhere that has gotten filled up and can be cleared to make this go faster?
The text was updated successfully, but these errors were encountered: