I’m trying to run sonar-scanner maven plugin in a Java project that contains some javascript and It keep stucked trying to connect to a “Node server” for 5-6mins at “Sensor Javascript” phase and then it returns timeout and continue with the rest of analysis.
We need to avoid that “stucked” time, since 5-6mins per analysis is too much and also we don’t know if the resulted Javascript analysis is right since we got that error.
I cannot find documentation of the internal Node command that is being executed, we are running Java 11 and have tried multiple maven version plugins (from latest to older versions). We have Node 20 installed as you can see in the log.
There is a “eslint-bridge server” that start and inmediatly stop after a few seconds, I have tried to run this server separatley (running the command that is exposed in the log) but got the same result with no other log information, is this “start and stop” beahivour" maybe the main reason of the error?
Error log with verobse:
10:01:48 [INFO] 10:01:48.388 Sensor JavaScript analysis [javascript]
10:01:48 [DEBUG] 10:01:48.392 Deploying bundle
10:01:48 [DEBUG] 10:01:48.392 Deploying eslint-bridge into /var/lib/****/workspace/****/target/sonar/.sonartmp/eslint-bridge-bundle
10:01:52 [DEBUG] 10:01:52.426 Deploying bundle (done) | time=4034ms
10:01:52 [DEBUG] 10:01:52.427 Starting server
10:01:52 [INFO] 10:01:52.430 Using Node.js executable /usr/bin/node from property sonar.nodejs.executable.
10:01:52 [DEBUG] 10:01:52.430 Checking Node.js version
10:01:52 [DEBUG] 10:01:52.431 Launching command /usr/bin/node -v
10:01:52 [DEBUG] 10:01:52.661 Using Node.js v20.9.0.
10:01:52 [DEBUG] 10:01:52.662 Starting Node.js process to start eslint-bridge server at port 33541
10:01:52 [DEBUG] 10:01:52.662 Launching command /usr/bin/node /var/lib/****/workspace/****/target/sonar/.sonartmp/eslint-bridge-bundle/package/bin/server 33541 127.0.0.1 /var/lib/****/workspace/****/webapp/target/sonar true false
10:01:57 [DEBUG] 10:01:56.232 starting eslint-bridge server at port 33541
10:01:57 [DEBUG] 10:01:56.245 eslint-bridge server is running at port 33541
10:02:11 [DEBUG] 10:02:11.243 eslint-bridge server closed
10:07:03 [ERROR] 10:06:52.673 Failed to start server (300s timeout)
10:07:03 org.sonarsource.nodejs.NodeCommandException: Failed to start server (300s timeout)
10:07:03 at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServer(EslintBridgeServerImpl.java:149)
10:07:03 at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServerLazily(EslintBridgeServerImpl.java:233)
10:07:03 at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.execute(AbstractEslintSensor.java:68)
10:07:03 at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
10:07:03 at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
10:07:03 at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
10:07:03 at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
10:07:03 at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
10:07:03 at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
10:07:03 at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:403)
10:07:03 at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:399)
10:07:03 at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:396)
10:07:03 at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:368)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
10:07:03 at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
10:07:03 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
10:07:03 at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
10:07:03 at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
10:07:03 at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
10:07:03 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:07:03 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:07:03 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:07:03 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
10:07:03 at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
10:07:03 at com.sun.proxy.$Proxy28.execute(Unknown Source)
10:07:03 at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
10:07:03 at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
10:07:03 at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:64)
10:07:03 at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:108)
10:07:03 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
10:07:03 at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
10:07:03 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
10:07:03 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
10:07:03 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
10:07:03 at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
10:07:03 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
10:07:03 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
10:07:03 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
10:07:03 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
10:07:03 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906)
10:07:03 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283)
10:07:03 at org.apache.maven.cli.MavenCli.main(MavenCli.java:206)
10:07:03 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:07:03 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:07:03 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:07:03 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
10:07:03 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:283)
10:07:03 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226)
10:07:03 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407)
10:07:03 at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348)
10:07:03
10:07:03 [INFO] 10:06:52.675 Hit the cache for 0 out of 0
10:07:03 [INFO] 10:06:52.676 Miss the cache for 0 out of 0
10:07:03 [INFO] 10:06:52.676 Sensor JavaScript analysis [javascript] (done) | time=304288ms
10:07:03 [INFO] 10:06:52.676 Sensor TypeScript analysis [javascript]
Usually, I’m in the position of telling people to install or upgrade Node.js. In your case, it may be the opposite.
When SonarQube 9.9 was released, we supported Node.js 14.17 through v18. And IIRC, versions beyond that were explicitly not supported. Since then the restriction has been lifted, but I think it was (is) probably still in for SonarQube 9.9.
So can you try downgrading to Node.js v18 and seeing if that helps?
Sorry for the delay, we were doing a node upgrade in jenkins and we couldn’t test until now.
We have tried to downgrade the version of node but it still gives the same error with Node v.18.0.0
09:35:55 [INFO] 09:35:55.731 Sensor JavaScript analysis [javascript]
09:35:55 [DEBUG] 09:35:55.737 Deploying bundle
09:35:55 [DEBUG] 09:35:55.737 Deploying eslint-bridge into /var/lib/****/workspace/****/target/sonar/.sonartmp/eslint-bridge-bundle
09:36:00 [DEBUG] 09:35:59.382 Deploying bundle (done) | time=3645ms
09:36:00 [DEBUG] 09:35:59.383 Starting server
09:36:00 [DEBUG] 09:35:59.387 Using default Node.js executable: 'node'.
09:36:00 [DEBUG] 09:35:59.387 Checking Node.js version
09:36:00 [DEBUG] 09:35:59.388 Launching command node -v
09:36:00 [DEBUG] 09:35:59.543 Using Node.js v18.0.0.
09:36:00 [DEBUG] 09:35:59.544 Starting Node.js process to start eslint-bridge server at port 35113
09:36:00 [DEBUG] 09:35:59.544 Launching command node /var/lib/****/workspace/******/target/sonar/.sonartmp/eslint-bridge-bundle/package/bin/server 35113 127.0.0.1 /var/lib/****/workspace/******/webapp/target/sonar true false
09:36:03 [DEBUG] 09:36:02.877 starting eslint-bridge server at port 35113
09:36:03 [DEBUG] 09:36:02.892 eslint-bridge server is running at port 35113
09:36:18 [DEBUG] 09:36:17.890 eslint-bridge server closed
09:41:09 [ERROR] 09:40:59.633 Failed to start server (300s timeout)
09:41:09 org.sonarsource.nodejs.NodeCommandException: Failed to start server (300s timeout)
09:41:09 at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServer(EslintBridgeServerImpl.java:149)
09:41:09 at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServerLazily(EslintBridgeServerImpl.java:233)
09:41:09 at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.execute(AbstractEslintSensor.java:68)
09:41:09 at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
09:41:09 at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
09:41:09 at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
09:41:09 at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
09:41:09 at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
09:41:09 at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
09:41:09 at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:403)
09:41:09 at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:399)
09:41:09 at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:396)
09:41:09 at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:368)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
09:41:09 at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
09:41:09 at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
09:41:09 at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
09:41:09 at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
09:41:09 at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
09:41:09 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
09:41:09 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
09:41:09 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
09:41:09 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
09:41:09 at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
09:41:09 at com.sun.proxy.$Proxy28.execute(Unknown Source)
09:41:09 at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:171)
09:41:09 at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:128)
09:41:09 at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
09:41:09 at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:104)
09:41:09 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
09:41:09 at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
09:41:09 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
09:41:09 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
09:41:09 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
09:41:09 at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
09:41:09 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
09:41:09 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
09:41:09 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
09:41:09 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
09:41:09 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906)
09:41:09 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283)
09:41:09 at org.apache.maven.cli.MavenCli.main(MavenCli.java:206)
09:41:09 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
09:41:09 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
09:41:09 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
09:41:09 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
09:41:09 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:283)
09:41:09 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226)
09:41:09 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407)
09:41:09 at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348)
09:41:09
09:41:09 [INFO] 09:40:59.634 Hit the cache for 0 out of 0
09:41:09 [INFO] 09:40:59.635 Miss the cache for 0 out of 0
09:41:09 [INFO] 09:40:59.635 Sensor JavaScript analysis [javascript] (done) | time=303904ms
Okay, thanks for checking that. For thoroughness, could you provide a full, analysis log starting from the analysis command?
Also, are you still on 9.9.2? I ask partly because 9.9.4 is out. I don’t expect that minor upgrade to have much impact on this, but there are some patches in it you may want to pick up.
Find attached a full sonar log in debug mode. I have removed lines where complete paths to the source code appeared and masked some paths because they are sensitive data.
The most important part is when the line “Sensor JavaScript analysis [javascript]” starts, after that you can check in the time that it takes around 7mins to return a timeout, then the analysis keep going fine.
[2024-03-27T08:42:35.640Z] [DEBUG] 09:42:35.481 * Community Branch Plugin 1.14.0 (communityBranchPlugin)
Can you pls try to remove it and run the analysis without it? I am wondering if it somehow interferes with the analyzer. What is the structure of the project? I don’t see any JS or TS files in the logs