Skip to content

Commit c328878

Browse files
authored
Add telemetry for launch failures (Shopify#2778)
1 parent d8e4c32 commit c328878

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

vscode/src/client.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ function collectClientOptions(
131131
outputChannel: WorkspaceChannel,
132132
ruby: Ruby,
133133
isMainWorkspace: boolean,
134+
telemetry: vscode.TelemetryLogger,
134135
): LanguageClientOptions {
135136
const pullOn: "change" | "save" | "both" =
136137
configuration.get("pullDiagnosticsOn")!;
@@ -204,7 +205,7 @@ function collectClientOptions(
204205
outputChannel,
205206
revealOutputChannelOn: RevealOutputChannelOn.Never,
206207
diagnosticPullOptions,
207-
errorHandler: new ClientErrorHandler(workspaceFolder),
208+
errorHandler: new ClientErrorHandler(workspaceFolder, telemetry),
208209
initializationOptions: {
209210
enabledFeatures,
210211
experimentalFeaturesEnabled: configuration.get(
@@ -221,9 +222,14 @@ function collectClientOptions(
221222

222223
class ClientErrorHandler implements ErrorHandler {
223224
private readonly workspaceFolder: vscode.WorkspaceFolder;
225+
private readonly telemetry: vscode.TelemetryLogger;
224226

225-
constructor(workspaceFolder: vscode.WorkspaceFolder) {
227+
constructor(
228+
workspaceFolder: vscode.WorkspaceFolder,
229+
telemetry: vscode.TelemetryLogger,
230+
) {
226231
this.workspaceFolder = workspaceFolder;
232+
this.telemetry = telemetry;
227233
}
228234

229235
error(
@@ -235,6 +241,19 @@ class ClientErrorHandler implements ErrorHandler {
235241
}
236242

237243
async closed(): Promise<CloseHandlerResult> {
244+
const label = vscode.workspace
245+
.getConfiguration("rubyLsp")
246+
.get("useLauncher")
247+
? "launcher"
248+
: "direct";
249+
250+
this.telemetry.logUsage("ruby_lsp.launch_failure", {
251+
type: "counter",
252+
attributes: {
253+
label,
254+
},
255+
});
256+
238257
const answer = await vscode.window.showErrorMessage(
239258
`Launching the Ruby LSP failed. This typically happens due to an error with version manager
240259
integration or Bundler issues.
@@ -310,6 +329,7 @@ export default class Client extends LanguageClient implements ClientInterface {
310329
outputChannel,
311330
ruby,
312331
isMainWorkspace,
332+
telemetry,
313333
),
314334
debugMode,
315335
);

0 commit comments

Comments
 (0)