Error in Eclipse 11.1.0.82589

After update to the last version I get an error.

Starting SonarLint for Eclipse 11.1.0.82589

Using Java installation of Eclipse

Using JRE from C:\Desarrollo\eclipse\jee-2024-09\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.6.v20250130-0529\jre

The Java analyzer cannot skip unchanged files in this context. A full analysis is performed for all files.

An error occurred while executing a scheduled task in sonarlint-finding-streamer

java.util.ConcurrentModificationException

at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1714)

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.AbstractPipeline.evaluate(AbstractPipeline.java:575)

at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)

at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)

at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)

at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)

at org.sonarsource.sonarlint.core.reporting.FindingReportingService.lambda$triggerStreaming$9(FindingReportingService.java:120)

at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)

at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)

at java.base/java.util.concurrent.ConcurrentHashMap$EntrySpliterator.forEachRemaining(ConcurrentHashMap.java:3652)

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.reporting.FindingReportingService.triggerStreaming(FindingReportingService.java:121)

at org.sonarsource.sonarlint.core.reporting.FindingReportingService.lambda$getStreamingDebounceAlarm$13(FindingReportingService.java:162)

at org.sonarsource.sonarlint.core.tracking.streaming.Alarm.notifyEnd(Alarm.java:55)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)

at java.base/java.lang.Thread.run(Thread.java:1583)

Hey @franhb,

thank you for reaching out. As in the template, can you please provide me with more information on this:

  • Operating system:
  • IDE name and version
  • Programming language you’re coding in: I guess Java
  • Is connected mode used:
    • SonarQube Cloud, SonarQube Server, or SonarQube Community Build? (if one of the latter two, which version?):

And, a bit about the context of when it occurred, please?

Best,
Tobias

  • Operating system: Windows 11
  • IDE name and version: Eclipse Version: 2024-12 (4.34.0) Build id: 20241128-0757
  • Programming language you’re coding in: Java
  • Is connected mode used: Not connected, only Eclipse plugin

Error occurs when Eclipse starts.
When I change any file the IDE freeze during 10-15 seconds but no error appears in console.

Thank you very much for the response! I assume you updated from the last version of SonarQube for Eclipse, 11.0?

I will flag this for my colleagues working on this part of the plugin!

Hi @franhb,

one more question about the freezes you mention: I could sadly not reproduce that, but when you do, can you create a thread dump for that? As it seems to happen for you every time it should be possible.

Additionally, when starting the IDE and editing the first file after a few seconds until it is frozen, can you provide us the full logs (enable all the options), please?
This means, enable all of this, restart the IDE and await for the error to popup and then edit a file and await the freeze. This would help us tremendiously!

Best,
Tobias

Hi,

after a few Eclipse restarts problem has gone.

Freezes appears to be a problem with Eclipse console.

Thanks

Hi @franhb,

thank you for the info. Nevertheless we don’t want this to happen to our users of course!
As you said it is linked to the Eclipse console, you don’t mean the SonarQube Console which is one of the provided consoles by our plug-in?

Best,
Tobias

I am also experiencing the same error message on startup as well as during modifications of java code (source version 17) in Eclipse 2024-12 (4.34.0) in connected mode (SonarQube Server Community Build 25.2.0).

Using Eclipse Temurin 21.0.4 on Windows 11 24H2.

Also, sometimes a different stack trace shows up in SonarQube Console:

Unexpected error occurred in scheduled task

java.lang.ArrayIndexOutOfBoundsException: Index 163 out of bounds for length 0
	at java.base/java.util.ImmutableCollections$ListN.get(ImmutableCollections.java:687)
	at org.sonarsource.sonarlint.core.tracking.TextRangeUtils.getTextRangeContent(TextRangeUtils.java:107)
	at org.sonarsource.sonarlint.core.tracking.TextRangeUtils.computeTextRangeHash(TextRangeUtils.java:74)
	at org.sonarsource.sonarlint.core.tracking.TextRangeUtils.getTextRangeWithHash(TextRangeUtils.java:47)
	at org.sonarsource.sonarlint.core.tracking.matching.RawIssueFindingMatchingAttributeMapper.getTextRangeHash(RawIssueFindingMatchingAttributeMapper.java:46)
	at org.sonarsource.sonarlint.core.tracking.matching.RawIssueFindingMatchingAttributeMapper.getTextRangeHash(RawIssueFindingMatchingAttributeMapper.java:28)
	at org.sonarsource.sonarlint.core.tracking.matching.IssueMatcher$LineAndTextRangeHashKey.<init>(IssueMatcher.java:115)
	at org.sonarsource.sonarlint.core.tracking.matching.IssueMatcher.match(IssueMatcher.java:86)
	at org.sonarsource.sonarlint.core.tracking.matching.IssueMatcher.match(IssueMatcher.java:53)
	at org.sonarsource.sonarlint.core.tracking.matching.MatchingSession.matchWithKnownFinding(MatchingSession.java:79)
	at org.sonarsource.sonarlint.core.tracking.matching.MatchingSession.matchWithKnownIssue(MatchingSession.java:70)
	at org.sonarsource.sonarlint.core.tracking.matching.MatchingSession.matchWithKnownFinding(MatchingSession.java:58)
	at org.sonarsource.sonarlint.core.tracking.TrackingService.onIssueDetected(TrackingService.java:119)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:382)
	at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:254)
	at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:173)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:400)
	at org.sonarsource.sonarlint.core.analysis.AnalysisService.streamIssue(AnalysisService.java:704)
	at org.sonarsource.sonarlint.core.analysis.AnalysisService.lambda$analyze$25(AnalysisService.java:660)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.IssueListenerHolder.handle(IssueListenerHolder.java:37)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.sensor.SonarLintSensorStorage.store(SonarLintSensorStorage.java:95)
	at org.sonarsource.sonarlint.core.analysis.sonarapi.DefaultSonarLintIssue.doSave(DefaultSonarLintIssue.java:194)
	at org.sonarsource.sonarlint.core.analysis.sonarapi.DefaultStorable.save(DefaultStorable.java:42)
	at org.sonar.java.reporting.JavaIssue.save(JavaIssue.java:99)
	at org.sonar.java.SonarComponents.reportIssue(SonarComponents.java:405)
	at org.sonar.java.SonarComponents.lambda$reportIssue$5(SonarComponents.java:383)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at org.sonar.java.SonarComponents.reportIssue(SonarComponents.java:377)
	at org.sonar.java.model.DefaultModuleScannerContext.reportIssue(DefaultModuleScannerContext.java:76)
	at org.sonar.java.model.DefaultJavaFileScannerContext.reportIssueWithFlow(DefaultJavaFileScannerContext.java:153)
	at org.sonar.java.model.DefaultJavaFileScannerContext.reportIssue(DefaultJavaFileScannerContext.java:146)
	at org.sonar.java.model.DefaultJavaFileScannerContext.reportIssue(DefaultJavaFileScannerContext.java:101)
	at org.sonar.java.checks.ClassVariableVisibilityCheck.visitVariable(ClassVariableVisibilityCheck.java:62)
	at org.sonar.java.model.declaration.VariableTreeImpl.accept(VariableTreeImpl.java:141)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:31)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitClass(BaseTreeVisitor.java:67)
	at org.sonar.java.checks.ClassVariableVisibilityCheck.visitClass(ClassVariableVisibilityCheck.java:52)
	at org.sonar.java.model.declaration.ClassTreeImpl.accept(ClassTreeImpl.java:239)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:31)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitCompilationUnit(BaseTreeVisitor.java:49)
	at org.sonar.java.model.JavaTree$CompilationUnitTreeImpl.accept(JavaTree.java:203)
	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37)
	at org.sonar.java.checks.ClassVariableVisibilityCheck.scanFile(ClassVariableVisibilityCheck.java:46)
	at org.sonar.java.model.VisitorsBridge.lambda$runScanner$1(VisitorsBridge.java:272)
	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:277)
	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:272)
	at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:255)
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:131)
	at org.sonar.java.ast.JavaAstScanner.lambda$scan$0(JavaAstScanner.java:91)
	at org.sonar.java.model.JParserConfig$FileByFile.parse(JParserConfig.java:275)
	at org.sonar.java.model.JParserConfig$FileByFile.parse(JParserConfig.java:250)
	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:88)
	at org.sonar.java.JavaFrontend.scanAndMeasureTask(JavaFrontend.java:407)
	at org.sonar.java.JavaFrontend.scan(JavaFrontend.java:159)
	at org.sonar.plugins.java.JavaSensor.execute(JavaSensor.java:109)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:101)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.sensor.SensorsExecutor.executeSensors(SensorsExecutor.java:91)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.sensor.SensorsExecutor.execute(SensorsExecutor.java:81)
	at org.sonarsource.sonarlint.core.analysis.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:122)
	at org.sonarsource.sonarlint.core.plugin.commons.container.SpringComponentContainer.startComponents(SpringComponentContainer.java:180)
	at org.sonarsource.sonarlint.core.plugin.commons.container.SpringComponentContainer.execute(SpringComponentContainer.java:159)
	at org.sonarsource.sonarlint.core.analysis.container.module.ModuleContainer.analyze(ModuleContainer.java:75)
	at org.sonarsource.sonarlint.core.analysis.command.AnalyzeCommand.doRunAnalysis(AnalyzeCommand.java:80)
	at org.sonarsource.sonarlint.core.analysis.command.AnalyzeCommand.lambda$execute$0(AnalyzeCommand.java:61)
	at org.sonarsource.sonarlint.core.progress.RpcProgressMonitor.lambda$startTask$0(RpcProgressMonitor.java:44)
	at org.sonarsource.sonarlint.core.progress.TaskManager.startTask(TaskManager.java:64)
	at org.sonarsource.sonarlint.core.progress.RpcProgressMonitor.startTask(RpcProgressMonitor.java:44)
	at org.sonarsource.sonarlint.core.analysis.command.AnalyzeCommand.execute(AnalyzeCommand.java:60)
	at org.sonarsource.sonarlint.core.analysis.command.AnalyzeCommand.execute(AnalyzeCommand.java:38)
	at org.sonarsource.sonarlint.core.analysis.AnalysisEngine$AsyncCommand.execute(AnalysisEngine.java:147)
	at org.sonarsource.sonarlint.core.analysis.AnalysisEngine.executeQueuedCommands(AnalysisEngine.java:71)
	at java.base/java.lang.Thread.run(Thread.java:1583)

Also also, it seems picking up java options results in an error being reported:

StdErr: Picked up _JAVA_OPTIONS: -Djava.vendor=Sun