Various codeAction failures in VS Code
TrevCraw opened this issue · comments
Not sure if the root issue is with the VS Code client or with how LSP4Jakarta is handling these requests. Related LT VS Code issue: OpenLiberty/liberty-tools-vscode#247.
First step may be to test to see if this occurs in other IDEs (Eclipse, IntelliJ)
May 07, 2023 5:57:19 P.M. org.eclipse.lsp4jakarta.commons.JakartaEESnippetRegistryLoader load
INFO: Loading snippets into registry...
May 07, 2023 5:57:19 P.M. org.eclipse.lsp4jakarta.JakartaLanguageServer initialize
INFO: Initializing Jakarta EE server
[Error - 6:00:11 PM] Request textDocument/codeAction failed.
Message: The request (id: 10, method: 'textDocument/codeAction') has been cancelled
Code: -32800
[Error - 6:05:00 PM] Request textDocument/codeAction failed.
Message: The request (id: 108, method: 'textDocument/codeAction') has been cancelled
Code: -32800
[Error - 6:05:11 PM] Request textDocument/codeAction failed.
Message: The request (id: 130, method: 'textDocument/codeAction') has been cancelled
Code: -32800
[Error - 6:07:21 PM] Request textDocument/codeAction failed.
Message: The request (id: 258, method: 'textDocument/codeAction') has been cancelled
Code: -32800
[Error - 6:15:15 PM] Request textDocument/codeAction failed.
Message: Request jakarta/java/codeaction failed with message: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
Code: -32603
[Error - 9:53:02 AM] Request textDocument/codeAction failed.
Message: Request jakarta/java/codeaction failed with message: java.lang.ClassCastException: class org.eclipse.jdt.core.dom.TypeDeclaration cannot be cast to class org.eclipse.jdt.core.dom.MethodDeclaration (org.eclipse.jdt.core.dom.TypeDeclaration and org.eclipse.jdt.core.dom.MethodDeclaration are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @25107054)
Code: -32603
May 11, 2023 9:59:00 A.M. org.eclipse.lsp4j.jsonrpc.RemoteEndpoint handleCancellation
WARNING: Unmatched cancel notification for request id 829
```
Also posted in OpenLiberty/liberty-tools-vscode#247
For this error in the "Language Support for Jakarta EE" log....
[Error - 6:15:15 PM] Request textDocument/codeAction failed.
Message: Request jakarta/java/codeaction failed with message: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
Code: -32603
...There is a corresponding exception in the "Language Support for Java" log. On initial glance, it looks like there are multiple issues here, but definitely looks like an NPE is occurring due to the CodeActionHandler in the org.eclipse.lsp4jakarta.jdt component.
[Error - 6:20:09 PM] May 15, 2023, 6:20:09 p.m. BadLocationException
null
org.eclipse.jface.text.BadLocationException
at org.eclipse.jface.text.TreeLineTracker.fail(TreeLineTracker.java:1054)
at org.eclipse.jface.text.TreeLineTracker.offsetByLine(TreeLineTracker.java:335)
at org.eclipse.jface.text.TreeLineTracker.getLineOffset(TreeLineTracker.java:1111)
at org.eclipse.jface.text.AbstractLineTracker.getLineOffset(AbstractLineTracker.java:252)
at org.eclipse.jface.text.AbstractDocument.getLineOffset(AbstractDocument.java:877)
at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOffset(SynchronizableDocument.java:323)
at org.eclipse.jdt.ls.core.internal.handlers.JsonRpcHelpers.toOffset(JsonRpcHelpers.java:85)
at org.eclipse.jdt.ls.core.internal.handlers.JsonRpcHelpers.toOffset(JsonRpcHelpers.java:69)
at org.eclipse.jdt.ls.core.internal.corrections.DiagnosticsHelper.getEndOffset(DiagnosticsHelper.java:38)
at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getProblemLocationCores(CodeActionHandler.java:304)
at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getCodeActionCommands(CodeActionHandler.java:138)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$13(JDTLanguageServer.java:720)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
[Error - 10:50:10 AM] May 16, 2023, 10:50:10 a.m. Problems occurred when invoking code from plug-in: "org.eclipse.jdt.ls.core".
java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
at org.eclipse.lsp4jakarta.jdt.internal.core.ls.JakartaDelegateCommandHandlerForJava.executeCommand(JakartaDelegateCommandHandlerForJava.java:52)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler$1.run(WorkspaceExecuteCommandHandler.java:230)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler.executeCommand(WorkspaceExecuteCommandHandler.java:220)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$4(JDTLanguageServer.java:585)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
at java.base/java.util.ArrayList.addAll(Unknown Source)
at org.eclipse.lsp4jakarta.jdt.codeAction.CodeActionHandler.codeAction(CodeActionHandler.java:143)
at org.eclipse.lsp4jakarta.jdt.core.JDTServicesManager.getCodeAction(JDTServicesManager.java:185)
at org.eclipse.lsp4jakarta.jdt.internal.core.ls.JakartaDelegateCommandHandlerForJava.lambda$2(JakartaDelegateCommandHandlerForJava.java:143)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.helpAsyncBlocker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.helpAsyncBlocker(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.waitingGet(Unknown Source)
... 14 more
[Error - 10:50:10 AM] May 16, 2023, 10:50:10 a.m. Error in calling delegate command handler
java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
at org.eclipse.lsp4jakarta.jdt.internal.core.ls.JakartaDelegateCommandHandlerForJava.executeCommand(JakartaDelegateCommandHandlerForJava.java:52)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler$1.run(WorkspaceExecuteCommandHandler.java:230)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler.executeCommand(WorkspaceExecuteCommandHandler.java:220)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$4(JDTLanguageServer.java:585)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
at java.base/java.util.ArrayList.addAll(Unknown Source)
at org.eclipse.lsp4jakarta.jdt.codeAction.CodeActionHandler.codeAction(CodeActionHandler.java:143)
at org.eclipse.lsp4jakarta.jdt.core.JDTServicesManager.getCodeAction(JDTServicesManager.java:185)
at org.eclipse.lsp4jakarta.jdt.internal.core.ls.JakartaDelegateCommandHandlerForJava.lambda$2(JakartaDelegateCommandHandlerForJava.java:143)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.helpAsyncBlocker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.helpAsyncBlocker(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.waitingGet(Unknown Source)
... 14 more
After the changes in #450, I am no longer seeing the following error:
[Error - 6:15:15 PM] Request textDocument/codeAction failed.
Message: Request jakarta/java/codeaction failed with message: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "<parameter1>" is null
Code: -32603
However, I still see both of the below errors occur:
[Error - 2:48:56 PM] Request textDocument/codeAction failed.
Message: The request (id: 57, method: 'textDocument/codeAction') has been cancelled
Code: -32800
May 17, 2023 2:53:39 P.M. org.eclipse.lsp4j.jsonrpc.RemoteEndpoint handleCancellation
WARNING: Unmatched cancel notification for request id 203
The root cause of the codeAction failed error due to cancellation was in the vscode-languageclient dependency - a fix was only required for Liberty Tools for VS Code: OpenLiberty/liberty-tools-vscode#255
[Error - 2:48:56 PM] Request textDocument/codeAction failed.
Message: The request (id: 57, method: 'textDocument/codeAction') has been cancelled
Code: -32800
The unmatched cancel notification warning does not appear to be severe and is most likely also caused by something on the VS Code side. A new issue will be opened in the Liberty Tools for VS Code repo to address. (OpenLiberty/liberty-tools-vscode#256)
May 17, 2023 2:53:39 P.M. org.eclipse.lsp4j.jsonrpc.RemoteEndpoint handleCancellation
WARNING: Unmatched cancel notification for request id 203
The root cause of the ClassCastException appears to be on the Jakarta side. A new issue will be opened in this repo to address. (#455)
[Error - 9:53:02 AM] Request textDocument/codeAction failed.
Message: Request jakarta/java/codeaction failed with message: java.lang.ClassCastException: class org.eclipse.jdt.core.dom.TypeDeclaration cannot be cast to class org.eclipse.jdt.core.dom.MethodDeclaration (org.eclipse.jdt.core.dom.TypeDeclaration and org.eclipse.jdt.core.dom.MethodDeclaration are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @25107054)
Code: -32603