redhat-developer / intellij-quarkus

IntelliJ Quarkus Tools
Eclipse Public License 2.0
120 stars 50 forks source link

Don't crash language servers if telemetry cannot be initialized #1384

Closed angelozerr closed 2 months ago

angelozerr commented 2 months ago

If we have bad version from telemetry it crashes language servers.

Here a sampel of stack trace:

Error while consuming LSP 'textDocument/semanticTokens/full' request

java.util.concurrent.ExecutionException: com.redhat.devtools.lsp4ij.server.CannotStartServerException: Error while starting language server 'qute' (pid=null)
    at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
    at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
    at com.redhat.devtools.lsp4ij.internal.CompletableFutures.waitUntilDone(CompletableFutures.java:119)
    at com.redhat.devtools.lsp4ij.features.semanticTokens.LSPSemanticTokensHighlightVisitor.visit(LSPSemanticTokensHighlightVisitor.java:92)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$runHighlightVisitorsForInjected$9(InjectedGeneralHighlightingPass.java:311)
    at com.redhat.devtools.lsp4ij.features.semanticTokens.LSPSemanticTokensHighlightVisitor.analyze(LSPSemanticTokensHighlightVisitor.java:66)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.runHighlightVisitorsForInjected(InjectedGeneralHighlightingPass.java:308)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$addInjectedPsiHighlights$7(InjectedGeneralHighlightingPass.java:246)
    at com.intellij.codeInsight.daemon.impl.AnnotatorRunner.lambda$runAnnotatorsAsync$2(AnnotatorRunner.java:75)
    at com.intellij.concurrency.JobLauncherImpl.procInOrderAsync(JobLauncherImpl.java:537)
    at com.intellij.codeInsight.daemon.impl.AnnotatorRunner.runAnnotatorsAsync(AnnotatorRunner.java:70)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.addInjectedPsiHighlights(InjectedGeneralHighlightingPass.java:245)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$collectInformationWithProgress$3(InjectedGeneralHighlightingPass.java:86)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$processInjectedPsiFiles$5(InjectedGeneralHighlightingPass.java:184)
    at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.probeElementsUpInner(InjectedLanguageUtilBase.java:251)
    at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.lambda$probeElementsUp$0(InjectedLanguageUtilBase.java:217)
    at com.intellij.openapi.application.impl.ReadActionCacheImpl$allowInWriteAction$1.invoke(ReadActionCacheImpl.kt:41)
    at com.intellij.openapi.application.impl.ReadActionCacheImpl$allowInWriteAction$1.invoke(ReadActionCacheImpl.kt:41)
    at com.intellij.openapi.application.impl.ReadActionCacheImpl.allowInWriteAction(ReadActionCacheImpl.kt:29)
    at com.intellij.openapi.application.impl.ReadActionCacheImpl.allowInWriteAction(ReadActionCacheImpl.kt:41)
    at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.probeElementsUp(InjectedLanguageUtilBase.java:216)
    at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.enumerate(InjectedLanguageUtilBase.java:159)
    at com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl.enumerateEx(InjectedLanguageManagerImpl.java:379)
    at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$processInjectedPsiFiles$6(InjectedGeneralHighlightingPass.java:182)
    at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:139)
    at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:152)
    at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:152)
    at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:152)
    at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:152)
    at com.intellij.openapi.application.impl.RwLockHolder.tryRunReadAction(RwLockHolder.kt:310)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:958)
    at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$1(ApplierCompleter.java:96)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:108)
    at com.intellij.concurrency.ApplierCompleter.lambda$compute$0(ApplierCompleter.java:86)
    at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:199)
    at com.intellij.openapi.application.impl.RwLockHolder.executeByImpatientReader(RwLockHolder.kt:491)
    at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:182)
    at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:86)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.redhat.devtools.lsp4ij.server.CannotStartServerException: Error while starting language server 'qute' (pid=null)
    at com.redhat.devtools.lsp4ij.LanguageServerWrapper.lambda$start$11(LanguageServerWrapper.java:316)
    at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
    at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.helpAsyncBlocker(ForkJoinPool.java:1253)
    at java.base/java.util.concurrent.ForkJoinPool.helpAsyncBlocker(ForkJoinPool.java:2237)
    at java.base/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1933)
    at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095)
    ... 47 more
Caused by: java.lang.NoSuchMethodError: 'void com.redhat.devtools.intellij.telemetry.core.service.TelemetryMessageBuilder.<init>(com.intellij.openapi.extensions.PluginDescriptor)'
    at com.redhat.devtools.intellij.quarkus.TelemetryService.lambda$new$0(TelemetryService.java:29)
    at com.redhat.devtools.intellij.telemetry.core.util.Lazy.get(Lazy.java:27)
    at com.redhat.devtools.intellij.quarkus.TelemetryService.instance(TelemetryService.java:33)
    at com.redhat.devtools.intellij.qute.lsp.QuteServer.<init>(QuteServer.java:56)
    at com.redhat.devtools.intellij.qute.lsp.QuteLanguageServerFactory.createConnectionProvider(QuteLanguageServerFactory.java:27)
    at com.redhat.devtools.lsp4ij.server.definition.extension.ExtensionLanguageServerDefinition.createConnectionProvider(ExtensionLanguageServerDefinition.java:54)
    at com.redhat.devtools.lsp4ij.LanguageServerWrapper.lambda$start$0(LanguageServerWrapper.java:223)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    ... 53 more