Skip to content
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: no completion/suggestion/linting working on large projects #66787

Open
didrocks opened this issue Apr 3, 2024 · 6 comments
Open
Labels
gopls Issues related to the Go language server, gopls. NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@didrocks
Copy link

didrocks commented Apr 3, 2024

What version of Go, VS Code & VS Code Go extension are you using?

Version Information
  • Run go version to get version of Go from the VS Code integrated terminal.
    go version go1.22.1 linux/amd64

  • Run gopls -v version to get version of Gopls from the VS Code integrated terminal.

 Build info
----------
golang.org/x/tools/gopls v0.15.2
    golang.org/x/tools/gopls@v0.15.2 h1:4JKt4inO8JaFW3l/Fh9X1k/5JQn+iUOpdc4/Lpi0mOs=
    github.com/BurntSushi/toml@v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
    github.com/google/go-cmp@v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
    golang.org/x/exp/typeparams@v0.0.0-20221212164502-fae10dda9338 h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=
    golang.org/x/mod@v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
    golang.org/x/sync@v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
    golang.org/x/telemetry@v0.0.0-20240209200032-7b892fcb8a78 h1:vcVnuftN4J4UKLRcgetjzfU9FjjgXUUYUc3JhFplgV4=
    golang.org/x/text@v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
    golang.org/x/tools@v0.18.1-0.20240311201521-78fbdeb61842 h1:No0LMXYFkp3j4oEsPdtY8LUQz33gu79Rm9DE+izMeGQ=
    golang.org/x/vuln@v1.0.1 h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU=
    honnef.co/go/tools@v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8=
    mvdan.cc/gofumpt@v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=
    mvdan.cc/xurls/v2@v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=
go: go1.21.3
  • Run code -v or code-insiders -v to get version of VS Code or VS Code Insiders.
1.87.2
863d2581ecda6849923a2118d93a088b0745d9d6
x64
  • Check your installed extensions to get the version of the VS Code Go extension
    v0.41.2

  • Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > Go: Locate Configured Go Tools command.

# Tools Configuration


## Environment

GOBIN: undefined
toolsGopath: 
gopath: /home/didrocks/.go
GOROOT: /usr/local/go
PATH: /home/didrocks/.go/bin:/usr/lib/ccache:/home/didrocks/tools/bin:/usr/local/go/bin:/home/didrocks/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/didrocks/development/flutter/bin

## Tools

	go:	/usr/local/go/bin/go: go version go1.21.3 linux/amd64

	gopls:	/home/didrocks/.go/bin/gopls	(version: v0.15.2 built with go: go1.21.3)
	gotests:	not installed
	gomodifytags:	not installed
	impl:	not installed
	goplay:	not installed
	dlv:	not installed
	staticcheck:	/home/didrocks/.go/bin/staticcheck	(version: v0.4.7 built with go: go1.21.3)

## Go env

Workspace Folder (no folder): undefined

	GO111MODULE=''
	GOARCH='amd64'
	GOBIN=''
	GOCACHE='/home/didrocks/.cache/go-build'
	GOENV='/home/didrocks/.config/go/env'
	GOEXE=''
	GOEXPERIMENT=''
	GOFLAGS=''
	GOHOSTARCH='amd64'
	GOHOSTOS='linux'
	GOINSECURE=''
	GOMODCACHE='/home/didrocks/.go/pkg/mod'
	GONOPROXY='github.com/canonical/ubuntu-pro-for-wsl'
	GONOSUMDB='github.com/canonical/ubuntu-pro-for-wsl'
	GOOS='linux'
	GOPATH='/home/didrocks/.go'
	GOPRIVATE='github.com/canonical/ubuntu-pro-for-wsl'
	GOPROXY='https://proxy.golang.org,direct'
	GOROOT='/usr/local/go'
	GOSUMDB='sum.golang.org'
	GOTMPDIR=''
	GOTOOLCHAIN='auto'
	GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
	GOVCS=''
	GOVERSION='go1.21.3'
	GCCGO='gccgo'
	GOAMD64='v1'
	AR='ar'
	CC='gcc'
	CXX='g++'
	CGO_ENABLED='1'
	GOMOD='/dev/null'
	GOWORK=''
	CGO_CFLAGS='-O2 -g'
	CGO_CPPFLAGS=''
	CGO_CXXFLAGS='-O2 -g'
	CGO_FFLAGS='-O2 -g'
	CGO_LDFLAGS='-O2 -g'
	PKG_CONFIG='pkg-config'
	GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3505542839=/tmp/go-build -gno-record-gcc-switches'

Share the Go related settings you have added/edited

I did reset all go related settings in the editor after noticing first the first time completion
/suggestion/autoimport didn’t work. The remaining settings left (for those debug traces) are:

    "go.languageServerFlags": [
        "-rpc.trace"
    ],
    "go.toolsManagement.autoUpdate": true,
    "gopls": {
        "verboseOutput": true,
    },

Note that I also tried adding semantictokens, but this didn’t improve anything.

Describe the bug

On a large project (hello world completion works on the same machine), gopls/vscode extension stops suggesting anything. One of those is for instance https://github.com/ubuntu/authd, but it’s not limited to it on my setup.

In the following reproducible step, I’m trying to request completion from an App struct instance to get its field. This is the same for anything else (methods or functions completion), refactoring, auto importing…

Note that the project is successfully building. If I run go build ./cmd/authd/, there is no error and the binary is produced.

I also tried to remove the gopls and go entire cache in my HOME directory, and having gopls rebuilt (then, with the default go version on the system, which is 1.21.3, which is autoupdate to 1.22.1 inside this project)

Steps to reproduce the behavior:

  1. Go to 'cmd/authd/daemon.go'
    we have the surroundings lines:
type App struct {
	rootCmd cobra.Command
	viper   *viper.Viper
	config  daemonConfig

	daemon *daemon.Daemon

	ready chan struct{}
}

[…]
func New() *App {
	a := App{ready: make(chan struct{})}

Log recording start with the cursor after the last line
2. Type carriage return, then a.
3. See that nothing is proposed, no field or methods of a.

The logs starting when I type a return carriage, then a. on line 49 (which is an App instance), expecting completion:

[Trace - 07:59:09.260 AM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":30},"contentChanges":[{"range":{"start":{"line":47,"character":37},"end":{"line":47,"character":37}},"rangeLength":0,"text":"\n\t"}]}


[Trace - 07:59:09.286 AM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":30,"diagnostics":[]}


[Trace - 07:59:09.412 AM] Sending request 'textDocument/semanticTokens/range - (220)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":14,"character":0},"end":{"line":96,"character":0}}}


[Error - Received] 07:59:09.412 AM golang/vscode-go#220 semantictokens are disabled


[Error - 07:59:09] Request textDocument/semanticTokens/range failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:09.580 AM] Sending request 'textDocument/codeAction - (221)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":1}},"context":{"diagnostics":[],"triggerKind":2}}


[Trace - 07:59:09.581 AM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2024/04/03 07:59:09 fixImports(filename=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\"), abs=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\", srcDir=\"/home/didrocks/work/authd/cmd/authd/daemon\" ...\n"}


[Trace - 07:59:09.581 AM] Sending request 'textDocument/foldingRange - (222)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Info  - 07:59:09] 2024/04/03 07:59:09 fixImports(filename="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go"), abs="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go", srcDir="/home/didrocks/work/authd/cmd/authd/daemon" ...

[Trace - 07:59:09.583 AM] Received response 'textDocument/codeAction - (221)' in 3ms.
Result: null


[Trace - 07:59:09.584 AM] Received response 'textDocument/foldingRange - (222)' in 2ms.
Result: [{"startLine":3,"startCharacter":8,"endLine":14,"endCharacter":29,"kind":"imports"},{"startLine":21,"startCharacter":17,"endLine":28,"endCharacter":20},{"startLine":32,"startCharacter":25,"endLine":35,"endCharacter":19},{"startLine":39,"startCharacter":26,"endLine":42,"endCharacter":22},{"startLine":46,"startCharacter":17,"endLine":97,"endCharacter":10},{"startLine":49,"startCharacter":27,"endLine":85,"endCharacter":21},{"startLine":54,"startCharacter":68,"endLine":79,"endCharacter":13},{"startLine":60,"startCharacter":27,"endLine":65,"endCharacter":5},{"startLine":61,"startCharacter":23,"endLine":64,"endCharacter":20},{"startLine":69,"startCharacter":72,"endLine":70,"endCharacter":14},{"startLine":72,"startCharacter":55,"endLine":73,"endCharacter":76},{"startLine":81,"startCharacter":55,"endLine":82,"endCharacter":27},{"startLine":101,"startCharacter":48,"endLine":133,"endCharacter":25},{"startLine":105,"startCharacter":59,"endLine":107,"endCharacter":82},{"startLine":111,"startCharacter":16,"endLine":113,"endCharacter":12},{"startLine":120,"startCharacter":22,"endLine":121,"endCharacter":68},{"startLine":125,"startCharacter":16,"endLine":127,"endCharacter":12},{"startLine":137,"startCharacter":72,"endLine":140,"endCharacter":9},{"startLine":144,"startCharacter":27,"endLine":145,"endCharacter":27},{"startLine":149,"startCharacter":32,"endLine":150,"endCharacter":31},{"startLine":154,"startCharacter":38,"endLine":158,"endCharacter":13},{"startLine":162,"startCharacter":22,"endLine":167,"endCharacter":43},{"startLine":164,"startCharacter":21,"endLine":165,"endCharacter":8},{"startLine":170,"startCharacter":45,"endLine":171,"endCharacter":119,"kind":"comment"},{"startLine":172,"startCharacter":27,"endLine":173,"endCharacter":10},{"startLine":177,"startCharacter":38,"endLine":178,"endCharacter":17}]


[Trace - 07:59:09.618 AM] Sending request 'textDocument/documentSymbol - (223)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:09.619 AM] Received response 'textDocument/documentSymbol - (223)' in 0ms.
Result: [{"name":"cmdName","kind":14,"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":23}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":13}}},{"name":"App","detail":"struct{...}","kind":23,"range":{"start":{"line":21,"character":5},"end":{"line":29,"character":1}},"selectionRange":{"start":{"line":21,"character":5},"end":{"line":21,"character":8}},"children":[{"name":"rootCmd","detail":"cobra.Command","kind":8,"range":{"start":{"line":22,"character":1},"end":{"line":22,"character":22}},"selectionRange":{"start":{"line":22,"character":1},"end":{"line":22,"character":8}}},{"name":"viper","detail":"*viper.Viper","kind":8,"range":{"start":{"line":23,"character":1},"end":{"line":23,"character":21}},"selectionRange":{"start":{"line":23,"character":1},"end":{"line":23,"character":6}}},{"name":"config","detail":"daemonConfig","kind":8,"range":{"start":{"line":24,"character":1},"end":{"line":24,"character":21}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":7}}},{"name":"daemon","detail":"*daemon.Daemon","kind":8,"range":{"start":{"line":26,"character":1},"end":{"line":26,"character":22}},"selectionRange":{"start":{"line":26,"character":1},"end":{"line":26,"character":7}}},{"name":"ready","detail":"chan struct{}","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":20}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":6}}}]},{"name":"systemPaths","detail":"struct{...}","kind":23,"range":{"start":{"line":32,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":32,"character":5},"end":{"line":32,"character":16}},"children":[{"name":"BrokersConf","detail":"string","kind":8,"range":{"start":{"line":33,"character":1},"end":{"line":33,"character":19}},"selectionRange":{"start":{"line":33,"character":1},"end":{"line":33,"character":12}}},{"name":"Cache","detail":"string","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":6}}},{"name":"Socket","detail":"string","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":19}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":7}}}]},{"name":"daemonConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":39,"character":5},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":39,"character":5},"end":{"line":39,"character":17}},"children":[{"name":"Brokers","detail":"[]string","kind":8,"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":8}}},{"name":"Verbosity","detail":"int","kind":8,"range":{"start":{"line":41,"character":1},"end":{"line":41,"character":14}},"selectionRange":{"start":{"line":41,"character":1},"end":{"line":41,"character":10}}},{"name":"Paths","detail":"systemPaths","kind":8,"range":{"start":{"line":42,"character":1},"end":{"line":42,"character":22}},"selectionRange":{"start":{"line":42,"character":1},"end":{"line":42,"character":6}}}]},{"name":"New","detail":"func() *App","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":8}}},{"name":"(*App).serve","detail":"func(config daemonConfig) error","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":134,"character":1}},"selectionRange":{"start":{"line":101,"character":14},"end":{"line":101,"character":19}}},{"name":"installVerbosityFlag","detail":"func(cmd *cobra.Command, viper *viper.Viper) *int","kind":12,"range":{"start":{"line":137,"character":0},"end":{"line":141,"character":1}},"selectionRange":{"start":{"line":137,"character":5},"end":{"line":137,"character":25}}},{"name":"(*App).Run","detail":"func() error","kind":6,"range":{"start":{"line":144,"character":0},"end":{"line":146,"character":1}},"selectionRange":{"start":{"line":144,"character":14},"end":{"line":144,"character":17}}},{"name":"(App).UsageError","detail":"func() bool","kind":6,"range":{"start":{"line":149,"character":0},"end":{"line":151,"character":1}},"selectionRange":{"start":{"line":149,"character":13},"end":{"line":149,"character":23}}},{"name":"(App).Hup","detail":"func() (shouldQuit bool)","kind":6,"range":{"start":{"line":154,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":154,"character":13},"end":{"line":154,"character":16}}},{"name":"(*App).Quit","detail":"func()","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":168,"character":1}},"selectionRange":{"start":{"line":162,"character":14},"end":{"line":162,"character":18}}},{"name":"(*App).WaitReady","detail":"func()","kind":6,"range":{"start":{"line":172,"character":0},"end":{"line":174,"character":1}},"selectionRange":{"start":{"line":172,"character":14},"end":{"line":172,"character":23}}},{"name":"(App).RootCmd","detail":"func() cobra.Command","kind":6,"range":{"start":{"line":177,"character":0},"end":{"line":179,"character":1}},"selectionRange":{"start":{"line":177,"character":13},"end":{"line":177,"character":20}}}]


[Trace - 07:59:09.637 AM] Sending request 'textDocument/codeLens - (224)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:09.638 AM] Received response 'textDocument/codeLens - (224)' in 0ms.
Result: null


[Trace - 07:59:09.710 AM] Sending request 'textDocument/semanticTokens/full - (225)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Error - Received] 07:59:09.710 AM golang/vscode-go#225 semantictokens are disabled


[Error - 07:59:09] Request textDocument/semanticTokens/full failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:09.788 AM] Sending request 'textDocument/documentSymbol - (226)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:09.788 AM] Received response 'textDocument/documentSymbol - (226)' in 0ms.
Result: [{"name":"cmdName","kind":14,"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":23}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":13}}},{"name":"App","detail":"struct{...}","kind":23,"range":{"start":{"line":21,"character":5},"end":{"line":29,"character":1}},"selectionRange":{"start":{"line":21,"character":5},"end":{"line":21,"character":8}},"children":[{"name":"rootCmd","detail":"cobra.Command","kind":8,"range":{"start":{"line":22,"character":1},"end":{"line":22,"character":22}},"selectionRange":{"start":{"line":22,"character":1},"end":{"line":22,"character":8}}},{"name":"viper","detail":"*viper.Viper","kind":8,"range":{"start":{"line":23,"character":1},"end":{"line":23,"character":21}},"selectionRange":{"start":{"line":23,"character":1},"end":{"line":23,"character":6}}},{"name":"config","detail":"daemonConfig","kind":8,"range":{"start":{"line":24,"character":1},"end":{"line":24,"character":21}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":7}}},{"name":"daemon","detail":"*daemon.Daemon","kind":8,"range":{"start":{"line":26,"character":1},"end":{"line":26,"character":22}},"selectionRange":{"start":{"line":26,"character":1},"end":{"line":26,"character":7}}},{"name":"ready","detail":"chan struct{}","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":20}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":6}}}]},{"name":"systemPaths","detail":"struct{...}","kind":23,"range":{"start":{"line":32,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":32,"character":5},"end":{"line":32,"character":16}},"children":[{"name":"BrokersConf","detail":"string","kind":8,"range":{"start":{"line":33,"character":1},"end":{"line":33,"character":19}},"selectionRange":{"start":{"line":33,"character":1},"end":{"line":33,"character":12}}},{"name":"Cache","detail":"string","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":6}}},{"name":"Socket","detail":"string","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":19}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":7}}}]},{"name":"daemonConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":39,"character":5},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":39,"character":5},"end":{"line":39,"character":17}},"children":[{"name":"Brokers","detail":"[]string","kind":8,"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":8}}},{"name":"Verbosity","detail":"int","kind":8,"range":{"start":{"line":41,"character":1},"end":{"line":41,"character":14}},"selectionRange":{"start":{"line":41,"character":1},"end":{"line":41,"character":10}}},{"name":"Paths","detail":"systemPaths","kind":8,"range":{"start":{"line":42,"character":1},"end":{"line":42,"character":22}},"selectionRange":{"start":{"line":42,"character":1},"end":{"line":42,"character":6}}}]},{"name":"New","detail":"func() *App","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":8}}},{"name":"(*App).serve","detail":"func(config daemonConfig) error","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":134,"character":1}},"selectionRange":{"start":{"line":101,"character":14},"end":{"line":101,"character":19}}},{"name":"installVerbosityFlag","detail":"func(cmd *cobra.Command, viper *viper.Viper) *int","kind":12,"range":{"start":{"line":137,"character":0},"end":{"line":141,"character":1}},"selectionRange":{"start":{"line":137,"character":5},"end":{"line":137,"character":25}}},{"name":"(*App).Run","detail":"func() error","kind":6,"range":{"start":{"line":144,"character":0},"end":{"line":146,"character":1}},"selectionRange":{"start":{"line":144,"character":14},"end":{"line":144,"character":17}}},{"name":"(App).UsageError","detail":"func() bool","kind":6,"range":{"start":{"line":149,"character":0},"end":{"line":151,"character":1}},"selectionRange":{"start":{"line":149,"character":13},"end":{"line":149,"character":23}}},{"name":"(App).Hup","detail":"func() (shouldQuit bool)","kind":6,"range":{"start":{"line":154,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":154,"character":13},"end":{"line":154,"character":16}}},{"name":"(*App).Quit","detail":"func()","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":168,"character":1}},"selectionRange":{"start":{"line":162,"character":14},"end":{"line":162,"character":18}}},{"name":"(*App).WaitReady","detail":"func()","kind":6,"range":{"start":{"line":172,"character":0},"end":{"line":174,"character":1}},"selectionRange":{"start":{"line":172,"character":14},"end":{"line":172,"character":23}}},{"name":"(App).RootCmd","detail":"func() cobra.Command","kind":6,"range":{"start":{"line":177,"character":0},"end":{"line":179,"character":1}},"selectionRange":{"start":{"line":177,"character":13},"end":{"line":177,"character":20}}}]


[Trace - 07:59:10.501 AM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":31},"contentChanges":[{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":1}},"rangeLength":0,"text":"a"}]}


[Trace - 07:59:10.532 AM] Sending request 'textDocument/completion - (227)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"position":{"line":48,"character":2},"context":{"triggerKind":1}}


[Trace - 07:59:10.535 AM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":31,"diagnostics":[]}


[Trace - 07:59:10.538 AM] Received response 'textDocument/completion - (227)' in 5ms.
Result: {"isIncomplete":true,"items":[{"label":"any","kind":8,"documentation":{"kind":"markdown","value":""},"preselect":true,"sortText":"00000","filterText":"any","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"any"}},{"label":"append","kind":3,"detail":"func(slice []Type, elems ...Type) []Type","documentation":{"kind":"markdown","value":""},"sortText":"00001","filterText":"append","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"append(${1:})"}},{"label":"adler32","kind":9,"detail":"\"hash/adler32\"","documentation":{"kind":"markdown","value":""},"sortText":"00002","filterText":"adler32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"adler32"},"additionalTextEdits":[{"range":{"start":{"line":5,"character":5},"end":{"line":5,"character":5}},"newText":"\"\n\t\"hash/adler32"}]},{"label":"aes","kind":9,"detail":"\"crypto/aes\"","documentation":{"kind":"markdown","value":""},"sortText":"00003","filterText":"aes","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"aes"},"additionalTextEdits":[{"range":{"start":{"line":4,"character":8},"end":{"line":4,"character":8}},"newText":"t\"\n\t\"cryp"},{"range":{"start":{"line":4,"character":9},"end":{"line":4,"character":9}},"newText":"o/aes"}]},{"label":"asn1","kind":9,"detail":"\"encoding/asn1\"","documentation":{"kind":"markdown","value":""},"sortText":"00004","filterText":"asn1","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"asn1"},"additionalTextEdits":[{"range":{"start":{"line":4,"character":9},"end":{"line":4,"character":9}},"newText":"\"\n\t\"encoding/asn1"}]},{"label":"atomic","kind":9,"detail":"\"sync/atomic\"","documentation":{"kind":"markdown","value":""},"sortText":"00005","filterText":"atomic","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"atomic"},"additionalTextEdits":[{"range":{"start":{"line":6,"character":9},"end":{"line":6,"character":9}},"newText":"\"\n\t\"sync/atomic"}]},{"label":"authd","kind":9,"detail":"\"github.com/ubuntu/authd\"","documentation":{"kind":"markdown","value":""},"sortText":"00006","filterText":"authd","insertTextFormat":2,"textEdit":{"range":{"start":{"line":48,"character":1},"end":{"line":48,"character":2}},"newText":"authd"},"additionalTextEdits":[{"range":{"start":{"line":9,"character":24},"end":{"line":9,"character":24}},"newText":"\"\n\t\"github.com/ubuntu/authd"}]}]}


[Trace - 07:59:10.651 AM] Sending request 'textDocument/semanticTokens/range - (228)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":14,"character":0},"end":{"line":96,"character":0}}}


[Error - Received] 07:59:10.651 AM golang/vscode-go#228 semantictokens are disabled


[Error - 07:59:10] Request textDocument/semanticTokens/range failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:10.751 AM] Sending request 'textDocument/codeAction - (229)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":48,"character":2},"end":{"line":48,"character":2}},"context":{"diagnostics":[],"triggerKind":2}}


[Trace - 07:59:10.752 AM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2024/04/03 07:59:10 fixImports(filename=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\"), abs=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\", srcDir=\"/home/didrocks/work/authd/cmd/authd/daemon\" ...\n"}


[Trace - 07:59:10.753 AM] Received response 'textDocument/codeAction - (229)' in 1ms.
Result: null


[Info  - 07:59:10] 2024/04/03 07:59:10 fixImports(filename="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go"), abs="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go", srcDir="/home/didrocks/work/authd/cmd/authd/daemon" ...

[Trace - 07:59:10.801 AM] Sending request 'textDocument/foldingRange - (230)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:10.801 AM] Received response 'textDocument/foldingRange - (230)' in 0ms.
Result: [{"startLine":3,"startCharacter":8,"endLine":14,"endCharacter":29,"kind":"imports"},{"startLine":21,"startCharacter":17,"endLine":28,"endCharacter":20},{"startLine":32,"startCharacter":25,"endLine":35,"endCharacter":19},{"startLine":39,"startCharacter":26,"endLine":42,"endCharacter":22},{"startLine":46,"startCharacter":17,"endLine":97,"endCharacter":10},{"startLine":49,"startCharacter":27,"endLine":85,"endCharacter":21},{"startLine":54,"startCharacter":68,"endLine":79,"endCharacter":13},{"startLine":60,"startCharacter":27,"endLine":65,"endCharacter":5},{"startLine":61,"startCharacter":23,"endLine":64,"endCharacter":20},{"startLine":69,"startCharacter":72,"endLine":70,"endCharacter":14},{"startLine":72,"startCharacter":55,"endLine":73,"endCharacter":76},{"startLine":81,"startCharacter":55,"endLine":82,"endCharacter":27},{"startLine":101,"startCharacter":48,"endLine":133,"endCharacter":25},{"startLine":105,"startCharacter":59,"endLine":107,"endCharacter":82},{"startLine":111,"startCharacter":16,"endLine":113,"endCharacter":12},{"startLine":120,"startCharacter":22,"endLine":121,"endCharacter":68},{"startLine":125,"startCharacter":16,"endLine":127,"endCharacter":12},{"startLine":137,"startCharacter":72,"endLine":140,"endCharacter":9},{"startLine":144,"startCharacter":27,"endLine":145,"endCharacter":27},{"startLine":149,"startCharacter":32,"endLine":150,"endCharacter":31},{"startLine":154,"startCharacter":38,"endLine":158,"endCharacter":13},{"startLine":162,"startCharacter":22,"endLine":167,"endCharacter":43},{"startLine":164,"startCharacter":21,"endLine":165,"endCharacter":8},{"startLine":170,"startCharacter":45,"endLine":171,"endCharacter":119,"kind":"comment"},{"startLine":172,"startCharacter":27,"endLine":173,"endCharacter":10},{"startLine":177,"startCharacter":38,"endLine":178,"endCharacter":17}]


[Trace - 07:59:10.861 AM] Sending request 'textDocument/documentSymbol - (231)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:10.862 AM] Received response 'textDocument/documentSymbol - (231)' in 1ms.
Result: [{"name":"cmdName","kind":14,"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":23}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":13}}},{"name":"App","detail":"struct{...}","kind":23,"range":{"start":{"line":21,"character":5},"end":{"line":29,"character":1}},"selectionRange":{"start":{"line":21,"character":5},"end":{"line":21,"character":8}},"children":[{"name":"rootCmd","detail":"cobra.Command","kind":8,"range":{"start":{"line":22,"character":1},"end":{"line":22,"character":22}},"selectionRange":{"start":{"line":22,"character":1},"end":{"line":22,"character":8}}},{"name":"viper","detail":"*viper.Viper","kind":8,"range":{"start":{"line":23,"character":1},"end":{"line":23,"character":21}},"selectionRange":{"start":{"line":23,"character":1},"end":{"line":23,"character":6}}},{"name":"config","detail":"daemonConfig","kind":8,"range":{"start":{"line":24,"character":1},"end":{"line":24,"character":21}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":7}}},{"name":"daemon","detail":"*daemon.Daemon","kind":8,"range":{"start":{"line":26,"character":1},"end":{"line":26,"character":22}},"selectionRange":{"start":{"line":26,"character":1},"end":{"line":26,"character":7}}},{"name":"ready","detail":"chan struct{}","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":20}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":6}}}]},{"name":"systemPaths","detail":"struct{...}","kind":23,"range":{"start":{"line":32,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":32,"character":5},"end":{"line":32,"character":16}},"children":[{"name":"BrokersConf","detail":"string","kind":8,"range":{"start":{"line":33,"character":1},"end":{"line":33,"character":19}},"selectionRange":{"start":{"line":33,"character":1},"end":{"line":33,"character":12}}},{"name":"Cache","detail":"string","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":6}}},{"name":"Socket","detail":"string","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":19}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":7}}}]},{"name":"daemonConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":39,"character":5},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":39,"character":5},"end":{"line":39,"character":17}},"children":[{"name":"Brokers","detail":"[]string","kind":8,"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":8}}},{"name":"Verbosity","detail":"int","kind":8,"range":{"start":{"line":41,"character":1},"end":{"line":41,"character":14}},"selectionRange":{"start":{"line":41,"character":1},"end":{"line":41,"character":10}}},{"name":"Paths","detail":"systemPaths","kind":8,"range":{"start":{"line":42,"character":1},"end":{"line":42,"character":22}},"selectionRange":{"start":{"line":42,"character":1},"end":{"line":42,"character":6}}}]},{"name":"New","detail":"func() *App","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":8}}},{"name":"(*App).serve","detail":"func(config daemonConfig) error","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":134,"character":1}},"selectionRange":{"start":{"line":101,"character":14},"end":{"line":101,"character":19}}},{"name":"installVerbosityFlag","detail":"func(cmd *cobra.Command, viper *viper.Viper) *int","kind":12,"range":{"start":{"line":137,"character":0},"end":{"line":141,"character":1}},"selectionRange":{"start":{"line":137,"character":5},"end":{"line":137,"character":25}}},{"name":"(*App).Run","detail":"func() error","kind":6,"range":{"start":{"line":144,"character":0},"end":{"line":146,"character":1}},"selectionRange":{"start":{"line":144,"character":14},"end":{"line":144,"character":17}}},{"name":"(App).UsageError","detail":"func() bool","kind":6,"range":{"start":{"line":149,"character":0},"end":{"line":151,"character":1}},"selectionRange":{"start":{"line":149,"character":13},"end":{"line":149,"character":23}}},{"name":"(App).Hup","detail":"func() (shouldQuit bool)","kind":6,"range":{"start":{"line":154,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":154,"character":13},"end":{"line":154,"character":16}}},{"name":"(*App).Quit","detail":"func()","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":168,"character":1}},"selectionRange":{"start":{"line":162,"character":14},"end":{"line":162,"character":18}}},{"name":"(*App).WaitReady","detail":"func()","kind":6,"range":{"start":{"line":172,"character":0},"end":{"line":174,"character":1}},"selectionRange":{"start":{"line":172,"character":14},"end":{"line":172,"character":23}}},{"name":"(App).RootCmd","detail":"func() cobra.Command","kind":6,"range":{"start":{"line":177,"character":0},"end":{"line":179,"character":1}},"selectionRange":{"start":{"line":177,"character":13},"end":{"line":177,"character":20}}}]


[Trace - 07:59:10.903 AM] Sending request 'textDocument/codeLens - (232)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:10.903 AM] Received response 'textDocument/codeLens - (232)' in 0ms.
Result: null


[Trace - 07:59:10.948 AM] Sending request 'textDocument/semanticTokens/full - (233)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Error - Received] 07:59:10.949 AM golang/vscode-go#233 semantictokens are disabled


[Error - 07:59:10] Request textDocument/semanticTokens/full failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:11.001 AM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":32},"contentChanges":[{"range":{"start":{"line":48,"character":2},"end":{"line":48,"character":2}},"rangeLength":0,"text":"."}]}


[Trace - 07:59:11.004 AM] Sending request 'textDocument/completion - (234)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"position":{"line":48,"character":3},"context":{"triggerKind":2,"triggerCharacter":"."}}


[Trace - 07:59:11.024 AM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go","version":32,"diagnostics":[]}


[Trace - 07:59:11.105 AM] Received response 'textDocument/completion - (234)' in 101ms.
Result: {"isIncomplete":true,"items":[]}


[Trace - 07:59:11.152 AM] Sending request 'textDocument/semanticTokens/range - (235)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":14,"character":0},"end":{"line":96,"character":0}}}


[Error - Received] 07:59:11.153 AM golang/vscode-go#235 semantictokens are disabled


[Error - 07:59:11] Request textDocument/semanticTokens/range failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:11.253 AM] Sending request 'textDocument/codeAction - (236)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":48,"character":3},"end":{"line":48,"character":3}},"context":{"diagnostics":[],"triggerKind":2}}


[Trace - 07:59:11.254 AM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2024/04/03 07:59:11 fixImports(filename=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\"), abs=\"/home/didrocks/work/authd/cmd/authd/daemon/daemon.go\", srcDir=\"/home/didrocks/work/authd/cmd/authd/daemon\" ...\n"}


[Trace - 07:59:11.254 AM] Received response 'textDocument/codeAction - (236)' in 1ms.
Result: null


[Info  - 07:59:11] 2024/04/03 07:59:11 fixImports(filename="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go"), abs="/home/didrocks/work/authd/cmd/authd/daemon/daemon.go", srcDir="/home/didrocks/work/authd/cmd/authd/daemon" ...

[Trace - 07:59:11.304 AM] Sending request 'textDocument/foldingRange - (237)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:11.305 AM] Received response 'textDocument/foldingRange - (237)' in 1ms.
Result: [{"startLine":3,"startCharacter":8,"endLine":14,"endCharacter":29,"kind":"imports"},{"startLine":21,"startCharacter":17,"endLine":28,"endCharacter":20},{"startLine":32,"startCharacter":25,"endLine":35,"endCharacter":19},{"startLine":39,"startCharacter":26,"endLine":42,"endCharacter":22},{"startLine":46,"startCharacter":17,"endLine":97,"endCharacter":10},{"startLine":49,"startCharacter":27,"endLine":85,"endCharacter":21},{"startLine":54,"startCharacter":68,"endLine":79,"endCharacter":13},{"startLine":60,"startCharacter":27,"endLine":65,"endCharacter":5},{"startLine":61,"startCharacter":23,"endLine":64,"endCharacter":20},{"startLine":69,"startCharacter":72,"endLine":70,"endCharacter":14},{"startLine":72,"startCharacter":55,"endLine":73,"endCharacter":76},{"startLine":81,"startCharacter":55,"endLine":82,"endCharacter":27},{"startLine":101,"startCharacter":48,"endLine":133,"endCharacter":25},{"startLine":105,"startCharacter":59,"endLine":107,"endCharacter":82},{"startLine":111,"startCharacter":16,"endLine":113,"endCharacter":12},{"startLine":120,"startCharacter":22,"endLine":121,"endCharacter":68},{"startLine":125,"startCharacter":16,"endLine":127,"endCharacter":12},{"startLine":137,"startCharacter":72,"endLine":140,"endCharacter":9},{"startLine":144,"startCharacter":27,"endLine":145,"endCharacter":27},{"startLine":149,"startCharacter":32,"endLine":150,"endCharacter":31},{"startLine":154,"startCharacter":38,"endLine":158,"endCharacter":13},{"startLine":162,"startCharacter":22,"endLine":167,"endCharacter":43},{"startLine":164,"startCharacter":21,"endLine":165,"endCharacter":8},{"startLine":170,"startCharacter":45,"endLine":171,"endCharacter":119,"kind":"comment"},{"startLine":172,"startCharacter":27,"endLine":173,"endCharacter":10},{"startLine":177,"startCharacter":38,"endLine":178,"endCharacter":17}]


[Trace - 07:59:11.352 AM] Sending request 'textDocument/documentSymbol - (238)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:11.352 AM] Received response 'textDocument/documentSymbol - (238)' in 0ms.
Result: [{"name":"cmdName","kind":14,"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":23}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":13}}},{"name":"App","detail":"struct{...}","kind":23,"range":{"start":{"line":21,"character":5},"end":{"line":29,"character":1}},"selectionRange":{"start":{"line":21,"character":5},"end":{"line":21,"character":8}},"children":[{"name":"rootCmd","detail":"cobra.Command","kind":8,"range":{"start":{"line":22,"character":1},"end":{"line":22,"character":22}},"selectionRange":{"start":{"line":22,"character":1},"end":{"line":22,"character":8}}},{"name":"viper","detail":"*viper.Viper","kind":8,"range":{"start":{"line":23,"character":1},"end":{"line":23,"character":21}},"selectionRange":{"start":{"line":23,"character":1},"end":{"line":23,"character":6}}},{"name":"config","detail":"daemonConfig","kind":8,"range":{"start":{"line":24,"character":1},"end":{"line":24,"character":21}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":7}}},{"name":"daemon","detail":"*daemon.Daemon","kind":8,"range":{"start":{"line":26,"character":1},"end":{"line":26,"character":22}},"selectionRange":{"start":{"line":26,"character":1},"end":{"line":26,"character":7}}},{"name":"ready","detail":"chan struct{}","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":20}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":6}}}]},{"name":"systemPaths","detail":"struct{...}","kind":23,"range":{"start":{"line":32,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":32,"character":5},"end":{"line":32,"character":16}},"children":[{"name":"BrokersConf","detail":"string","kind":8,"range":{"start":{"line":33,"character":1},"end":{"line":33,"character":19}},"selectionRange":{"start":{"line":33,"character":1},"end":{"line":33,"character":12}}},{"name":"Cache","detail":"string","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":6}}},{"name":"Socket","detail":"string","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":19}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":7}}}]},{"name":"daemonConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":39,"character":5},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":39,"character":5},"end":{"line":39,"character":17}},"children":[{"name":"Brokers","detail":"[]string","kind":8,"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":8}}},{"name":"Verbosity","detail":"int","kind":8,"range":{"start":{"line":41,"character":1},"end":{"line":41,"character":14}},"selectionRange":{"start":{"line":41,"character":1},"end":{"line":41,"character":10}}},{"name":"Paths","detail":"systemPaths","kind":8,"range":{"start":{"line":42,"character":1},"end":{"line":42,"character":22}},"selectionRange":{"start":{"line":42,"character":1},"end":{"line":42,"character":6}}}]},{"name":"New","detail":"func() *App","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":8}}},{"name":"(*App).serve","detail":"func(config daemonConfig) error","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":134,"character":1}},"selectionRange":{"start":{"line":101,"character":14},"end":{"line":101,"character":19}}},{"name":"installVerbosityFlag","detail":"func(cmd *cobra.Command, viper *viper.Viper) *int","kind":12,"range":{"start":{"line":137,"character":0},"end":{"line":141,"character":1}},"selectionRange":{"start":{"line":137,"character":5},"end":{"line":137,"character":25}}},{"name":"(*App).Run","detail":"func() error","kind":6,"range":{"start":{"line":144,"character":0},"end":{"line":146,"character":1}},"selectionRange":{"start":{"line":144,"character":14},"end":{"line":144,"character":17}}},{"name":"(App).UsageError","detail":"func() bool","kind":6,"range":{"start":{"line":149,"character":0},"end":{"line":151,"character":1}},"selectionRange":{"start":{"line":149,"character":13},"end":{"line":149,"character":23}}},{"name":"(App).Hup","detail":"func() (shouldQuit bool)","kind":6,"range":{"start":{"line":154,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":154,"character":13},"end":{"line":154,"character":16}}},{"name":"(*App).Quit","detail":"func()","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":168,"character":1}},"selectionRange":{"start":{"line":162,"character":14},"end":{"line":162,"character":18}}},{"name":"(*App).WaitReady","detail":"func()","kind":6,"range":{"start":{"line":172,"character":0},"end":{"line":174,"character":1}},"selectionRange":{"start":{"line":172,"character":14},"end":{"line":172,"character":23}}},{"name":"(App).RootCmd","detail":"func() cobra.Command","kind":6,"range":{"start":{"line":177,"character":0},"end":{"line":179,"character":1}},"selectionRange":{"start":{"line":177,"character":13},"end":{"line":177,"character":20}}}]


[Trace - 07:59:11.380 AM] Sending request 'textDocument/codeLens - (239)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:11.381 AM] Received response 'textDocument/codeLens - (239)' in 0ms.
Result: null


[Trace - 07:59:11.451 AM] Sending request 'textDocument/semanticTokens/full - (240)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Error - Received] 07:59:11.452 AM golang/vscode-go#240 semantictokens are disabled


[Error - 07:59:11] Request textDocument/semanticTokens/full failed.
  Message: semantictokens are disabled
  Code: 0 
[Trace - 07:59:11.528 AM] Sending request 'textDocument/documentSymbol - (241)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:11.528 AM] Received response 'textDocument/documentSymbol - (241)' in 0ms.
Result: [{"name":"cmdName","kind":14,"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":23}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":13}}},{"name":"App","detail":"struct{...}","kind":23,"range":{"start":{"line":21,"character":5},"end":{"line":29,"character":1}},"selectionRange":{"start":{"line":21,"character":5},"end":{"line":21,"character":8}},"children":[{"name":"rootCmd","detail":"cobra.Command","kind":8,"range":{"start":{"line":22,"character":1},"end":{"line":22,"character":22}},"selectionRange":{"start":{"line":22,"character":1},"end":{"line":22,"character":8}}},{"name":"viper","detail":"*viper.Viper","kind":8,"range":{"start":{"line":23,"character":1},"end":{"line":23,"character":21}},"selectionRange":{"start":{"line":23,"character":1},"end":{"line":23,"character":6}}},{"name":"config","detail":"daemonConfig","kind":8,"range":{"start":{"line":24,"character":1},"end":{"line":24,"character":21}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":7}}},{"name":"daemon","detail":"*daemon.Daemon","kind":8,"range":{"start":{"line":26,"character":1},"end":{"line":26,"character":22}},"selectionRange":{"start":{"line":26,"character":1},"end":{"line":26,"character":7}}},{"name":"ready","detail":"chan struct{}","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":20}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":6}}}]},{"name":"systemPaths","detail":"struct{...}","kind":23,"range":{"start":{"line":32,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":32,"character":5},"end":{"line":32,"character":16}},"children":[{"name":"BrokersConf","detail":"string","kind":8,"range":{"start":{"line":33,"character":1},"end":{"line":33,"character":19}},"selectionRange":{"start":{"line":33,"character":1},"end":{"line":33,"character":12}}},{"name":"Cache","detail":"string","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":6}}},{"name":"Socket","detail":"string","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":19}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":7}}}]},{"name":"daemonConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":39,"character":5},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":39,"character":5},"end":{"line":39,"character":17}},"children":[{"name":"Brokers","detail":"[]string","kind":8,"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":8}}},{"name":"Verbosity","detail":"int","kind":8,"range":{"start":{"line":41,"character":1},"end":{"line":41,"character":14}},"selectionRange":{"start":{"line":41,"character":1},"end":{"line":41,"character":10}}},{"name":"Paths","detail":"systemPaths","kind":8,"range":{"start":{"line":42,"character":1},"end":{"line":42,"character":22}},"selectionRange":{"start":{"line":42,"character":1},"end":{"line":42,"character":6}}}]},{"name":"New","detail":"func() *App","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":8}}},{"name":"(*App).serve","detail":"func(config daemonConfig) error","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":134,"character":1}},"selectionRange":{"start":{"line":101,"character":14},"end":{"line":101,"character":19}}},{"name":"installVerbosityFlag","detail":"func(cmd *cobra.Command, viper *viper.Viper) *int","kind":12,"range":{"start":{"line":137,"character":0},"end":{"line":141,"character":1}},"selectionRange":{"start":{"line":137,"character":5},"end":{"line":137,"character":25}}},{"name":"(*App).Run","detail":"func() error","kind":6,"range":{"start":{"line":144,"character":0},"end":{"line":146,"character":1}},"selectionRange":{"start":{"line":144,"character":14},"end":{"line":144,"character":17}}},{"name":"(App).UsageError","detail":"func() bool","kind":6,"range":{"start":{"line":149,"character":0},"end":{"line":151,"character":1}},"selectionRange":{"start":{"line":149,"character":13},"end":{"line":149,"character":23}}},{"name":"(App).Hup","detail":"func() (shouldQuit bool)","kind":6,"range":{"start":{"line":154,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":154,"character":13},"end":{"line":154,"character":16}}},{"name":"(*App).Quit","detail":"func()","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":168,"character":1}},"selectionRange":{"start":{"line":162,"character":14},"end":{"line":162,"character":18}}},{"name":"(*App).WaitReady","detail":"func()","kind":6,"range":{"start":{"line":172,"character":0},"end":{"line":174,"character":1}},"selectionRange":{"start":{"line":172,"character":14},"end":{"line":172,"character":23}}},{"name":"(App).RootCmd","detail":"func() cobra.Command","kind":6,"range":{"start":{"line":177,"character":0},"end":{"line":179,"character":1}},"selectionRange":{"start":{"line":177,"character":13},"end":{"line":177,"character":20}}}]


[Trace - 07:59:12.254 AM] Sending request 'textDocument/inlayHint - (242)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"range":{"start":{"line":0,"character":0},"end":{"line":126,"character":0}}}


[Trace - 07:59:12.255 AM] Received response 'textDocument/inlayHint - (242)' in 0ms.
Result: null


[Trace - 07:59:12.504 AM] Sending request 'textDocument/documentLink - (243)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"}}


[Trace - 07:59:12.531 AM] Received response 'textDocument/documentLink - (243)' in 26ms.
Result: [{"range":{"start":{"line":4,"character":2},"end":{"line":4,"character":9}},"target":"https://pkg.go.dev/context"},{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":5}},"target":"https://pkg.go.dev/fmt"},{"range":{"start":{"line":6,"character":2},"end":{"line":6,"character":9}},"target":"https://pkg.go.dev/runtime"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":24}},"target":"https://pkg.go.dev/github.com/spf13/cobra@v1.8.0"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":24}},"target":"https://pkg.go.dev/github.com/spf13/viper@v1.18.2"},{"range":{"start":{"line":10,"character":2},"end":{"line":10,"character":41}},"target":"https://pkg.go.dev/github.com/ubuntu/authd/internal/consts"},{"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":41}},"target":"https://pkg.go.dev/github.com/ubuntu/authd/internal/daemon"},{"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":38}},"target":"https://pkg.go.dev/github.com/ubuntu/authd/internal/log"},{"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":43}},"target":"https://pkg.go.dev/github.com/ubuntu/authd/internal/services"},{"range":{"start":{"line":14,"character":2},"end":{"line":14,"character":28}},"target":"https://pkg.go.dev/github.com/ubuntu/decorate@v0.0.0-20230606064312-bc4ac83958d6"}]


[Trace - 07:59:15.999 AM] Sending request 'textDocument/completion - (244)'.
Params: {"textDocument":{"uri":"file:///home/didrocks/work/authd/cmd/authd/daemon/daemon.go"},"position":{"line":48,"character":3},"context":{"triggerKind":1}}


[Trace - 07:59:16.105 AM] Received response 'textDocument/completion - (244)' in 106ms.
Result: {"isIncomplete":true,"items":[]}

Additional logs

Please find attached additional logs when opening the project.

open-project-traces.txt

@didrocks
Copy link
Author

didrocks commented Apr 3, 2024

I got it worked again by removing ~/.go/pkg/ directory. This one didn’t have github.com/ubuntu/authd in it, but some directories where owned by root. It seems that gopls silently failed and stop indexing, or did I miss this info in the above log?

@findleyr
Copy link
Contributor

findleyr commented Apr 3, 2024

Hmm. In your RPC logs, I see VS Code shutting down your LSP session, with about a second of initialization. Is that expected? Did you close the session very quickly?

@didrocks
Copy link
Author

didrocks commented Apr 4, 2024

@findleyr No, I did wait a good 30 seconds after opening vscode.

Could it be an issue due to ~/.go/pkg/ permission I was mentioning (weird that gopls would need write access while go build just pass), and a lack of warning/debug info to hilight it?

@findleyr
Copy link
Contributor

findleyr commented Apr 4, 2024

@didrocks in your logs, I see the LSP client sending a shutdown message to gopls 1s after it is started.

Specifically, these trace logs:


[Trace - 08:02:34.075 AM] Sending request 'initialize - (0)'.

[Trace - 08:02:34.867 AM] Sending request 'shutdown - (10)'.
Params: 

[Trace - 08:02:34.967 AM] Sending request 'initialize - (0)'.

It looks like gopls crashed on its first startup (but I don't see a stack). However, the second time, it didn't crash.
It looks like gopls was stuck on fixImports, which may be related to https://go.dev/issue/66647.

@findleyr
Copy link
Contributor

findleyr commented Apr 4, 2024

@didrocks did you by any chance reinstall gopls during this process? Does your project have go 1.22.x in its go.mod file?

@didrocks
Copy link
Author

didrocks commented Apr 5, 2024

@findley: maybe that’s the run log after I removed gopls to ensure that I test with a new fresh install of gopls (through the vscode plugin). I can’t be 100% certain. But even with this, this didn’t fix it. The only thing that helped fixing it, as said previously, is removing .go/pkg.

Yes, the project has go 1.22.0 and a targeted toolchain of 1.22.1 at the time.

@adonovan adonovan transferred this issue from golang/vscode-go Apr 11, 2024
@gopherbot gopherbot added the gopls Issues related to the Go language server, gopls. label Apr 11, 2024
@adonovan adonovan changed the title No completion/suggestion/linting working with gopls on large projects x/tools/gopls: no completion/suggestion/linting working on large projects Apr 11, 2024
@adonovan adonovan added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Apr 11, 2024
@gopherbot gopherbot added the Tools This label describes issues relating to any tools in the x/tools repository. label Apr 11, 2024
@gopherbot gopherbot added this to the Unreleased milestone Apr 11, 2024
@adonovan adonovan modified the milestones: Unreleased, gopls/v0.16.0 Apr 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gopls Issues related to the Go language server, gopls. NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. Tools This label describes issues relating to any tools in the x/tools repository.
Projects
None yet
Development

No branches or pull requests

4 participants