Skip to content

OutOfMemoryError java heap space in sonar scanner using sql plugin #48

@sgnieto

Description

@sgnieto

Hi,

I’m experiencing OutOfMemoryErrors running sonar scanner to analyze sql project.

I’m using folowing versions:

  • SonarQube Server: 25.3.0.104237-community using docker
  • Sonar Scanner docker: sonarsource/sonarqube-scan:4.0.0
  • Sonar sql plugin: 1.4.0

I want to analyze a sql project from sql server using tsql dialect. No matter the size of the project is I’m facing constantly the same error.
I’ve tested following things:

  • Analyze the files directly with the plugin sonar-sql-plugin directly (using rulesHelper.jar) and files are analyzed correctly. So I’ve discarded file problems:
  • java -jar rulesHelper.jar analyze file "NA" tsql /opt/atlassian/pipelines/agent/build/src
    Analyzing folder: /opt/atlassian/pipelines/agent/build/src
    Issue found: "C014(OR verb is used in a WHERE clause)" at line 110 in "XXX.sql" file
    Issue found: "C007(NOLOCK hint used)" at line 42 in "XXX.sql" file
    Issue found: "C007(NOLOCK hint used)" at line 47 in "XXX.sql" file
  • I’ve tried to increase mem and also play a bit with GC parameters, ended in this moment with the followings: SONAR_SCANNER_OPTS=“-Xms2g -Xmx6g -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=60 -XX:G1ReservePercent=20”. But still having same OOM error. I add the scanner log for more informacion.
    19:28:46.160 INFO Project root configuration file: /opt/atlassian/pipelines/agent/build/sonar-project.properties
    19:28:46.174 INFO SonarScanner CLI 7.0.2.4839
    19:28:46.176 INFO Java 17.0.14 Amazon.com Inc. (64-bit)
    19:28:46.176 INFO Linux 6.1.79 amd64
    19:28:46.178 INFO SONAR_SCANNER_OPTS=-Xms2g -Xmx6g -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=60 -XX:G1ReservePercent=20
    19:28:46.219 INFO User cache: /opt/sonar-scanner/.sonar/cache
    19:28:47.841 INFO JRE provisioning: os[linux], arch[x86_64]
    19:28:55.135 INFO Communicating with SonarQube Community Build 25.3.0.104237
    19:28:55.459 INFO Starting SonarScanner Engine...
    19:28:55.459 INFO Java 17.0.13 Eclipse Adoptium (64-bit)
    19:28:56.545 INFO Load global settings
    19:28:57.125 INFO Load global settings (done) | time=581ms
    19:28:57.128 INFO Server id: XXXXX
    19:28:57.136 INFO Loading required plugins
    19:28:57.136 INFO Load plugins index
    19:28:57.358 INFO Load plugins index (done) | time=221ms
    19:28:57.358 INFO Load/download plugins
    19:29:00.329 INFO Load/download plugins (done) | time=2971ms
    19:29:00.733 INFO Process project properties
    19:29:00.745 INFO Process project properties (done) | time=11ms
    19:29:00.752 INFO Project key: XXXXXX
    19:29:00.753 INFO Base dir: /opt/atlassian/pipelines/agent/build
    19:29:00.753 INFO Working dir: /opt/atlassian/pipelines/agent/build/.scannerwork
    19:29:00.758 INFO Load project settings for component key: 'XXXXXX
    19:29:00.881 INFO Load project settings for component key: 'XXXXXX' (done) | time=123ms
    19:29:00.902 INFO Load quality profiles
    19:29:01.062 INFO Load quality profiles (done) | time=160ms
    19:29:01.075 INFO Auto-configuring with CI 'Bitbucket Pipelines'
    19:29:01.096 INFO Load active rules
    19:29:01.494 INFO Load active rules (done) | time=398ms
    19:29:01.499 INFO Load analysis cache
    19:29:01.617 INFO Load analysis cache (404) | time=118ms
    19:29:01.897 INFO Preprocessing files...
    19:29:02.802 INFO 1 language detected in 357 preprocessed files
    19:29:02.802 INFO 310 files ignored because of inclusion/exclusion patterns
    19:29:02.803 INFO 0 files ignored because of scm ignore settings
    19:29:02.804 INFO Loading plugins for detected languages
    19:29:02.804 INFO Load/download plugins
    19:29:02.804 INFO Load/download plugins (done) | time=0ms
    19:29:02.842 INFO Load project repositories
    19:29:03.046 INFO Load project repositories (done) | time=205ms
    19:29:03.057 INFO Indexing files...
    19:29:03.057 INFO Project configuration:
    19:29:03.058 INFO Excluded sources: /Security//., /dbo/Synonyms//., /dbo/Tables//., /dbo/Views//.
    19:29:03.077 INFO 357 files indexed
    19:29:03.078 INFO Quality profile for sql: SQL rules
    19:29:03.078 INFO ------------- Run sensors on module XXXXXX
    19:29:03.112 INFO Load metrics repository
    19:29:03.237 INFO Load metrics repository (done) | time=126ms
    19:29:03.486 INFO Sensor JaCoCo XML Report Importer [jacoco]
    19:29:03.487 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
    19:29:03.487 INFO No report imported, no coverage information will be imported by JaCoCo XML Report Importer
    19:29:03.487 INFO Sensor JaCoCo XML Report Importer [jacoco] (done) | time=2ms
    19:29:03.487 INFO Sensor Java Config Sensor [iac]
    19:29:03.510 INFO 0 source files to be analyzed
    19:29:03.515 INFO 0/0 source files have been analyzed
    19:29:03.516 INFO Sensor Java Config Sensor [iac] (done) | time=29ms
    19:29:03.516 INFO Sensor org.sonar.plugins.sql.sensors.SQLSensor [sql]
    19:30:23.741 WARN Unexpected exception while analyzing file: F1.sql
    java.lang.OutOfMemoryError: Java heap space
    19:30:23.742 WARN Unexpected exception while analyzing file: F2.sql
    java.lang.OutOfMemoryError: Java heap space
    at org.antlr.v4.runtime.atn.ParserATNSimulator.getEpsilonTarget(ParserATNSimulator.java:1785)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1544)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closureCheckingStopState(ParserATNSimulator.java:1516)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.closure_(ParserATNSimulator.java:1589)
    19:30:23.744 WARN Unexpected exception while analyzing file: F3.sql
    java.lang.OutOfMemoryError: Java heap space
    19:30:23.745 WARN Unexpected exception while analyzing file: F4.sql
    java.lang.OutOfMemoryError: Java heap space
    at org.antlr.v4.runtime.misc.FlexibleHashMap.createEntryListArray(FlexibleHashMap.java:73)
    at org.antlr.v4.runtime.misc.FlexibleHashMap.expand(FlexibleHashMap.java:188)
    at org.antlr.v4.runtime.misc.FlexibleHashMap.put(FlexibleHashMap.java:102)
    at org.antlr.v4.runtime.misc.FlexibleHashMap.expand(FlexibleHashMap.java:198)
    at org.antlr.v4.runtime.misc.FlexibleHashMap.put(FlexibleHashMap.java:102)
    at org.antlr.v4.runtime.atn.PredictionMode.getConflictingAltSubsets(PredictionMode.java:552)
    at org.antlr.v4.runtime.atn.PredictionMode.hasSLLConflictTerminatingPrediction(PredictionMode.java:241)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.computeTargetState(ParserATNSimulator.java:605)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:457)
    at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:396)
    at org.antlr.sql.dialects.tsql.TSqlParser.table_source_item(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.table_source(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.non_ansi_join(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.table_sources(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.update_statement(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.dml_clause(TSqlParser.java:5655)
    at org.antlr.sql.dialects.tsql.TSqlParser.sql_clauses(TSqlParser.java:5449)
    at org.antlr.sql.dialects.tsql.TSqlParser.block_statement(TSqlParser.java:7902)
    at org.antlr.sql.dialects.tsql.TSqlParser.cfl_statement(TSqlParser.java:7729)
    at org.antlr.sql.dialects.tsql.TSqlParser.sql_clauses(TSqlParser.java:5466)
    at org.antlr.sql.dialects.tsql.TSqlParser.create_or_alter_procedure(TSqlParser.java)
    at org.antlr.sql.dialects.tsql.TSqlParser.batch_level_statement(TSqlParser.java:5351)
    at org.antlr.sql.dialects.tsql.TSqlParser.batch(TSqlParser.java:5255)
    at org.antlr.sql.dialects.tsql.TSqlParser.tsql_file(TSqlParser.java:5063)
    at org.antlr.sql.dialects.TSQLDialect.getRoot(TSQLDialect.java:21)
    at org.antlr.sql.dialects.BaseDialect.parse(BaseDialect.java:29)
    at org.antlr.sql.dialects.Dialects.parse(Dialects.java:45)
    at org.sonar.plugins.sql.sensors.SQLSensor$1.run(SQLSensor.java:105)
    at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.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)
    19:30:51.774 WARN Unexpected exception while analyzing file: F5.sql
    java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions