From 189687957017d8241d9ece0c3935e3ec2ca91a54 Mon Sep 17 00:00:00 2001 From: "Hana (Hyang-Ah) Kim" Date: Tue, 28 Nov 2023 11:12:29 -0500 Subject: [PATCH] gopls: enable telemetry uploading only with 'serve' Fixes golang/go#64425 Change-Id: Ic27115a7034020313109f8268b4656f8fef66fb1 Reviewed-on: https://go-review.googlesource.com/c/tools/+/545475 TryBot-Result: Gopher Robot Run-TryBot: Hyang-Ah Hana Kim Reviewed-by: Robert Findley Auto-Submit: Hyang-Ah Hana Kim Commit-Queue: Hyang-Ah Hana Kim --- gopls/internal/cmd/serve.go | 3 +++ gopls/internal/telemetry/telemetry.go | 6 ++---- gopls/internal/telemetry/telemetry_go118.go | 2 +- gopls/main.go | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gopls/internal/cmd/serve.go b/gopls/internal/cmd/serve.go index a04e6dc75d3..08ed0312116 100644 --- a/gopls/internal/cmd/serve.go +++ b/gopls/internal/cmd/serve.go @@ -18,6 +18,7 @@ import ( "golang.org/x/tools/gopls/internal/lsp/debug" "golang.org/x/tools/gopls/internal/lsp/lsprpc" "golang.org/x/tools/gopls/internal/lsp/protocol" + "golang.org/x/tools/gopls/internal/telemetry" "golang.org/x/tools/internal/fakenet" "golang.org/x/tools/internal/jsonrpc2" "golang.org/x/tools/internal/tool" @@ -77,6 +78,8 @@ func (s *Serve) remoteArgs(network, address string) []string { // Run configures a server based on the flags, and then runs it. // It blocks until the server shuts down. func (s *Serve) Run(ctx context.Context, args ...string) error { + telemetry.Upload() + if len(args) > 0 { return tool.CommandLineErrorf("server does not take arguments, got %v", args) } diff --git a/gopls/internal/telemetry/telemetry.go b/gopls/internal/telemetry/telemetry.go index dc6f7c23372..2ce284c2bfd 100644 --- a/gopls/internal/telemetry/telemetry.go +++ b/gopls/internal/telemetry/telemetry.go @@ -26,10 +26,8 @@ func SetMode(mode string) error { return telemetry.SetMode(mode) } -// Start starts telemetry instrumentation. -func Start() { - counter.Open() - // upload only once at startup, hoping that users restart gopls often. +// Upload starts a goroutine for telemetry upload. +func Upload() { go upload.Run(nil) } diff --git a/gopls/internal/telemetry/telemetry_go118.go b/gopls/internal/telemetry/telemetry_go118.go index 53394002f76..7d0f11c7443 100644 --- a/gopls/internal/telemetry/telemetry_go118.go +++ b/gopls/internal/telemetry/telemetry_go118.go @@ -17,7 +17,7 @@ func SetMode(mode string) error { return nil } -func Start() { +func Upload() { } func RecordClientInfo(params *protocol.ParamInitialize) { diff --git a/gopls/main.go b/gopls/main.go index 19fab778dee..8163266972f 100644 --- a/gopls/main.go +++ b/gopls/main.go @@ -17,14 +17,14 @@ import ( "context" "os" + "golang.org/x/telemetry/counter" "golang.org/x/tools/gopls/internal/cmd" "golang.org/x/tools/gopls/internal/hooks" - "golang.org/x/tools/gopls/internal/telemetry" "golang.org/x/tools/internal/tool" ) func main() { - telemetry.Start() + counter.Open() // Enable telemetry counter writing. ctx := context.Background() tool.Main(ctx, cmd.New("gopls", "", nil, hooks.Options), os.Args[1:]) }