From 53c340f0a5fdf78a3a43ecec1f76b03908d26588 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 21 Nov 2024 17:45:42 -0500 Subject: [PATCH] Fix LSP fetching bug and Emit getServer after each step of LSP fetching (#260) --- .../eclipse/amazonq/lsp/manager/DefaultLspManager.java | 2 +- .../amazonq/lsp/manager/fetcher/RemoteLspFetcher.java | 2 ++ .../amazonq/telemetry/LanguageServerTelemetryProvider.java | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/DefaultLspManager.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/DefaultLspManager.java index f6b8dd12..fc2fb103 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/DefaultLspManager.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/DefaultLspManager.java @@ -52,7 +52,7 @@ public static Builder builder() { } @Override - public LspInstallResult getLspInstallation() { + public synchronized LspInstallResult getLspInstallation() { if (installResult != null) { return installResult; } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/fetcher/RemoteLspFetcher.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/fetcher/RemoteLspFetcher.java index 6fdf0b1f..d804dfce 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/fetcher/RemoteLspFetcher.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/fetcher/RemoteLspFetcher.java @@ -101,6 +101,7 @@ public LspFetchResult fetch(final PluginPlatform platform, final PluginArchitect // delete invalid local cache ArtifactUtils.deleteDirectory(downloadDirectory); + emitGetServer(Result.FAILED, serverVersion, LanguageServerLocation.CACHE, null, start); // if all lsp target contents are successfully downloaded from remote location, // return the download location @@ -118,6 +119,7 @@ public LspFetchResult fetch(final PluginPlatform platform, final PluginArchitect Activator.getLogger().info(String.format( "Unable to download Amazon Q language server version v%s. Attempting to fetch from fallback location", serverVersion)); + emitGetServer(Result.FAILED, serverVersion, LanguageServerLocation.REMOTE, null, start); // use the most compatible fallback cached lsp version var fallbackDir = getFallback(serverVersion, platform, architecture, destination); diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/telemetry/LanguageServerTelemetryProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/telemetry/LanguageServerTelemetryProvider.java index 568aed51..506769f7 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/telemetry/LanguageServerTelemetryProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/telemetry/LanguageServerTelemetryProvider.java @@ -9,6 +9,7 @@ import software.aws.toolkits.eclipse.amazonq.lsp.manager.fetcher.RecordLspSetupArgs; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.telemetry.LanguageserverTelemetry; +import software.aws.toolkits.telemetry.TelemetryDefinitions.LanguageServerLocation; import software.aws.toolkits.telemetry.TelemetryDefinitions.LanguageServerSetupStage; import software.aws.toolkits.telemetry.TelemetryDefinitions.Result; @@ -36,14 +37,14 @@ public static void emitSetupGetManifest(final Result result, final RecordLspSetu public static void emitSetupGetServer(final Result result, final RecordLspSetupArgs args) { emitSetupMetric(result, args, LanguageServerSetupStage.GET_SERVER); - if (result == Result.FAILED) { + if (result == Result.FAILED && args.getLocation() == LanguageServerLocation.UNKNOWN) { emitSetupAll(Result.FAILED, args); } } public static void emitSetupValidate(final Result result, final RecordLspSetupArgs args) { emitSetupMetric(result, args, LanguageServerSetupStage.VALIDATE); - if (result == Result.FAILED) { + if (result == Result.FAILED && args.getLocation() != LanguageServerLocation.OVERRIDE) { emitSetupAll(Result.FAILED, args); } }