Cannot invoke "String.equals(Object)" because "caseSensitivePropertyValue" is null

Please provide

  • Windows 11
  • SonarLint for Eclipse 8.1.0.80220
  • Is connected mode used:
    • Connected to SonarQube: * Enterprise Edition Version 8.9.9 (build 56886)

After I upgraded the plugin I started seeing these errors every couple of minutes:

Wait for server issues task failed
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "caseSensitivePropertyValue" is null
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205)
    at org.sonarsource.sonarlint.core.utils.FutureUtils.waitForFutureWithTimeout(FutureUtils.java:66)
    at org.sonarsource.sonarlint.core.utils.FutureUtils.waitForTask(FutureUtils.java:39)
    at org.sonarsource.sonarlint.core.utils.FutureUtils.waitForTasks(FutureUtils.java:52)
    at org.sonarsource.sonarlint.core.tracking.IssueTrackingServiceImpl.lambda$refreshServerIssues$9(IssueTrackingServiceImpl.java:157)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "caseSensitivePropertyValue" is null
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$findUniqueAmong$57(XodusServerIssueStore.java:695)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
    at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1856)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.findUniqueAmong(XodusServerIssueStore.java:696)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.getOrCreateFile(XodusServerIssueStore.java:591)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$replaceAllIssuesOfFile$8(XodusServerIssueStore.java:343)
    at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.executeInTransaction(PersistentEntityStoreImpl.java:699)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$replaceAllIssuesOfFile$9(XodusServerIssueStore.java:341)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.timed(XodusServerIssueStore.java:556)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.replaceAllIssuesOfFile(XodusServerIssueStore.java:341)
    at org.sonarsource.sonarlint.core.serverconnection.ServerIssueUpdater.updateFileIssues(ServerIssueUpdater.java:101)
    at org.sonarsource.sonarlint.core.serverconnection.ServerConnection.downloadServerIssuesForFile(ServerConnection.java:160)
    at org.sonarsource.sonarlint.core.sync.SynchronizationServiceImpl.lambda$fetchFileIssues$8(SynchronizationServiceImpl.java:189)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at org.sonarsource.sonarlint.core.sync.SynchronizationServiceImpl.fetchFileIssues(SynchronizationServiceImpl.java:187)
    at org.sonarsource.sonarlint.core.tracking.IssueTrackingServiceImpl.lambda$refreshServerIssues$7(IssueTrackingServiceImpl.java:154)
... 5 more
Error while tracking with server issues
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "caseSensitivePropertyValue" is null
    at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
    at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
    at org.sonarlint.eclipse.core.internal.utils.JobUtils.waitForFuture(JobUtils.java:59)
    at org.sonarlint.eclipse.core.internal.tracking.ProjectIssueTracker.trackWithServerIssues(ProjectIssueTracker.java:139)
    at org.sonarlint.eclipse.core.internal.jobs.AnalyzeConnectedProjectJob$ServerIssueTrackingAndMarkerUpdateJob.run(AnalyzeConnectedProjectJob.java:116)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "caseSensitivePropertyValue" is null
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$findUniqueAmong$57(XodusServerIssueStore.java:695)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
    at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1856)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.findUniqueAmong(XodusServerIssueStore.java:696)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$loadIssue$2(XodusServerIssueStore.java:322)
    at java.base/java.util.Optional.flatMap(Optional.java:289)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.lambda$loadIssue$5(XodusServerIssueStore.java:322)
    at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.computeInReadonlyTransaction(PersistentEntityStoreImpl.java:782)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.loadIssue(XodusServerIssueStore.java:320)
    at org.sonarsource.sonarlint.core.serverconnection.storage.XodusServerIssueStore.load(XodusServerIssueStore.java:306)
    at org.sonarsource.sonarlint.core.tracking.IssueTrackingServiceImpl.lambda$trackWithServerIssues$4(IssueTrackingServiceImpl.java:124)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1850)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
    at org.sonarsource.sonarlint.core.tracking.IssueTrackingServiceImpl.lambda$trackWithServerIssues$5(IssueTrackingServiceImpl.java:142)
    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
    at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483)
    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)
1 Like

Hello @gnl42,

There is indeed a missing check so I created this ticket to fix the problem. I think you must be in a specific scenario though, so I would be interested to get more details:

  • Could you share with us a screenshot of the SonarLint Bindings view, with all nodes expanded? You can hide sensitive information if needed, I’m specifically interested in the “IDE directory” and “Sonar directory” information
  • Could you try to narrow down on which open file this error is raised, and could you share with us this file path relative to the project folder?

Thank you

Hi Damien,
here is the bindings view:

(Attachment pom.xml is missing)

Hi Damien,
here is bindings view:

The problem file seems to be the /pom.xml of our project. The errors appear when I open the file.
If I copy the file to another project there are no error messages.

Thanks
George

pom.zip (15.6 KB)

Hi George,

Sorry for the late answer. Unfortunately, you blurred the interesting bits :smile:

It seems the project you opened in Eclipse is not exactly the one that was analyzed in SonarQube. This is a perfectly valid use case, as in the IDE you may want to open a subfolder of a bigger project. To be able to match locally detected issues with SonarQube ones, we need to calculate the path difference between your project in the IDE and SonarQube. This is what “IDE directory” and “Sonar directory” labels are about, and it seems there is a problem when computing them.

May I ask you to share, without revealing real names (you can use placeholders), what is your setup? For instance:

  • Relative path of the pom.xml in your SQ project:
    • path/to/folder/pom.xml
  • Relative path of the folder you opened in your IDE as a project:
    • path/to/folder
  • Values of “IDE directory” and “Sonar directory” adapted to those placeholders

Hope this is clear enough!

1 Like

Looks like one of the recent updates fixed the problem. I’m no longer seeing the error

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.