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

[Error] Остановка сканера с ошибкой Thread limit exceeded replacing blocked worker #326

Open
vaxabitus opened this issue Mar 12, 2024 · 6 comments

Comments

@vaxabitus
Copy link

При запуске сканера с опцией -Dsonar.bsl.languageserver.configurationPath=.bsl-language-server.json происходит остановка с ошибками
А при запуске сканера с опцией -Dsonar.bsl.languageserver.enabled=false все отрабатывает нормально
Большинство дирекотрий и файлов на русском.

$ locale
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8
$ sonar-scanner -Dsonar.bsl.languageserver.configurationPath=.bsl-language-server.json
INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /builds/1c/uh_group/uh_sbl/extensions/test/sonar-project.properties
INFO: SonarScanner 5.0.1.3006
INFO: Java 17.0.8 Alpine (64-bit)
INFO: Linux 5.10.0-16-amd64 amd64
INFO: User cache: /opt/sonar-scanner/.sonar/cache
INFO: Analyzing on SonarQube server 9.9.3.79811
INFO: Default locale: "ru_RU", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Load global settings
INFO: Load global settings (done) | time=243ms
INFO: Server id: E9239B6A-AXuW19-YDaOPjxAqsXKZ
INFO: User cache: /opt/sonar-scanner/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=193ms
INFO: Load/download plugins (done) | time=2336ms
INFO: Process project properties
INFO: Process project properties (done) | time=6ms
INFO: Execute project builders
INFO: Execute project builders (done) | time=1ms
INFO: Project key: 1c_uh_sbl_ext_test
INFO: Base dir: /builds/1c/uh_group/uh_sbl/extensions/test
INFO: Working dir: /builds/1c/uh_group/uh_sbl/extensions/test/.scannerwork
INFO: Load project settings for component key: '1c_uh_sbl_ext_test'
INFO: Load project settings for component key: '1c_uh_sbl_ext_test' (done) | time=20ms
INFO: Auto-configuring with CI 'Gitlab CI'
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=50ms
INFO: Load active rules
INFO: Load active rules (done) | time=1276ms
INFO: Load analysis cache
INFO: Load analysis cache (404) | time=11ms
INFO: Load project repositories
INFO: Load project repositories (done) | time=39ms
INFO: Indexing files...
INFO: Project configuration:
INFO: Included sources: **/.bsl, **/.os
INFO: 972 files indexed
INFO: 2547 files ignored because of inclusion/exclusion patterns
INFO: 0 files ignored because of scm ignore settings
INFO: Quality profile for bsl: SAM_BSL Language Server rules
INFO: ------------- Run sensors on module 1c_uh_sbl_ext_test
INFO: Load metrics repository
INFO: Load metrics repository (done) | time=21ms
INFO: Sensor JaCoCo XML Report Importer [jacoco]
INFO: 'sonar.coverage.jacoco.xmlReportPaths' is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml
INFO: No report imported, no coverage information will be imported by JaCoCo XML Report Importer
INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=1ms
INFO: Sensor CSS Rules [javascript]
INFO: No CSS, PHP, HTML or VueJS files are found in the project. CSS analysis is skipped.
INFO: Sensor CSS Rules [javascript] (done) | time=2ms
INFO: Sensor BSL Core Sensor [communitybsl]
INFO: Parsing files...
INFO: Bean 'utilsConfiguration' of type [com.github._1c_syntax.bsl.languageserver.infrastructure.UtilsConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
INFO: Bean 'stringInterner' of type [com.github._1c_syntax.utils.StringInterner] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
INFO: BSL LS configuration file exists. Overriding SonarQube rules' settings...
INFO: Source dir: /builds/1c/uh_group/uh_sbl/extensions/test/src
0% [== ] 64/972 (0:00:00 / 0:00:00)
32% [============= ] 313/972 (0:00:01 / 0:00:02)
41% [================= ] 402/972 (0:00:02 / 0:00:02)
54% [====================== ] 526/972 (0:00:05 / 0:00:04)
66% [============================ ] 650/972 (0:00:06 / 0:00:02)
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 22.018s
INFO: Final Memory: 1191M/3072M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
java.util.concurrent.RejectedExecutionException: java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:562)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:591)
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:689)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
at com.github._1c_syntax.bsl.sonar.BSLCoreSensor.lambda$execute$5(BSLCoreSensor.java:156)
at java.base/java.util.HashMap.forEach(HashMap.java:1421)
at com.github._1c_syntax.bsl.sonar.BSLCoreSensor.execute(BSLCoreSensor.java:139)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:403)
at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:399)
at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:368)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
at org.sonarsource.scanner.cli.Main.main(Main.java:62)
Caused by: java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
at java.base/java.util.concurrent.ForkJoinPool.tryCompensate(ForkJoinPool.java:1819)
at java.base/java.util.concurrent.ForkJoinPool.compensatedBlock(ForkJoinPool.java:3448)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3434)
at java.base/java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1898)
at java.base/java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2117)
at com.github._1c_syntax.bsl.languageserver.context.computer.DiagnosticComputer.compute_aroundBody0(DiagnosticComputer.java:61)
at com.github._1c_syntax.bsl.languageserver.context.computer.DiagnosticComputer$AjcClosure1.run(DiagnosticComputer.java:1)
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:179)
at com.github._1c_syntax.bsl.languageserver.aop.MeasuresAspect.measureComputers(MeasuresAspect.java:94)
at com.github._1c_syntax.bsl.languageserver.context.computer.DiagnosticComputer.compute(DiagnosticComputer.java:59)
at com.github._1c_syntax.bsl.languageserver.context.DocumentContext.computeDiagnostics(DocumentContext.java:435)
at com.github._1c_syntax.utils.Lazy.maybeCompute(Lazy.java:76)
at com.github._1c_syntax.utils.Lazy.getOrCompute(Lazy.java:53)
at com.github._1c_syntax.utils.Lazy.getOrCompute(Lazy.java:61)
at com.github._1c_syntax.bsl.languageserver.context.DocumentContext.getDiagnostics(DocumentContext.java:257)
at com.github._1c_syntax.bsl.sonar.BSLCoreSensor.processFile(BSLCoreSensor.java:178)
at com.github._1c_syntax.bsl.sonar.BSLCoreSensor.lambda$execute$4(BSLCoreSensor.java:161)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
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)

@nixel2007
Copy link
Member

-Dsonar.bsl.languageserver.enabled=false

В этом режиме не производится расчёт диагностик.

@nixel2007
Copy link
Member

Сколько RAM на машине?

@vaxabitus
Copy link
Author

Ядер и памяти на машине много, однако твоим вопросом, ты подтолкнул меня на мысль чтобы жестко их задать
SONAR_SCANNER_OPTS: "-XX:ActiveProcessorCount=4 -Xmx4096m -Xms4096m"
и все заработало

@nixel2007
Copy link
Member

Xms в данном сетапе не нужен и скорее вреден.
Какая версия плагина?

@vaxabitus
Copy link
Author

Версия 1.13

@nixel2007
Copy link
Member

Сколько ядер на машине? Если больше 16 с учётом HT, можете попробовать ограничить количество до 16, передав сканнеру
-Djava.util.concurrent.ForkJoinPool.common.parallelism=16
?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants