Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various codeAction failures in VS Code #449

Closed
TrevCraw opened this issue May 11, 2023 · 3 comments · Fixed by #450
Closed

Various codeAction failures in VS Code #449

TrevCraw opened this issue May 11, 2023 · 3 comments · Fixed by #450
Assignees
Labels
bug Something isn't working must-fix
Milestone

Comments

@TrevCraw
Copy link
Contributor

TrevCraw commented May 11, 2023

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
```  
@turkeylurkey turkeylurkey added bug Something isn't working must-fix labels May 11, 2023
@turkeylurkey turkeylurkey added this to the GA milestone May 11, 2023
@TrevCraw
Copy link
Contributor Author

TrevCraw commented May 16, 2023

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

@TrevCraw
Copy link
Contributor Author

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

@TrevCraw
Copy link
Contributor Author

TrevCraw commented May 29, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working must-fix
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants