Error 500 during Sonar runner execution on Jenkins

2020-03-11 14:43发布

问题:

I am getting the below error when running sonarqube standalone analysis on Jenkins. The sonarqube scanner is able to identify the files to be analyzed and is able to analyze them fine, but the issue is when it is trying to publish the project to dashboard.

When I open the URL http://vv123456:9000/api/ce/submit?projectKey=pkey&projectName=pname in browser, it says "{"errors":[{"msg":"HTTP method POST is required"}]}", which means the sonarqube webservice is fine.

Error on Jenkins build:

ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:100)
    at org.sonar.runner.Main.executeTask(Main.java:70)
    at org.sonar.runner.Main.execute(Main.java:59)
    at org.sonar.runner.Main.main(Main.java:53)
Caused by: org.sonarqube.ws.client.HttpException: Error 500 on [http://vv123456:9000/api/ce/submit?projectKey=pkey&projectName=pname][1]
    at org.sonarqube.ws.client.BaseResponse.failIfNotSuccessful(BaseResponse.java:34)
    at org.sonar.batch.bootstrap.BatchWsClient.failIfUnauthorized(BatchWsClient.java:99)
    at org.sonar.batch.bootstrap.BatchWsClient.call(BatchWsClient.java:69)
    at org.sonar.batch.report.ReportPublisher.upload(ReportPublisher.java:172)
    at org.sonar.batch.report.ReportPublisher.execute(ReportPublisher.java:127)
    at org.sonar.batch.phases.PublishPhaseExecutor.publishReportJob(PublishPhaseExecutor.java:64)
    at org.sonar.batch.phases.PublishPhaseExecutor.executeOnRoot(PublishPhaseExecutor.java:51)
    at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:86)
    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:79)
    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
    ... 9 more

回答1:

In the SonarQube logs on the server where web-service is hosted (vv123456 in my case), there was an error logged as:

No such file or directory - C:/Windows/system32/config/systemprofile/AppData/Local/Temp

So, I added the path to the temp location in wrapper.conf as:

set.TMPDIR=/SonarQube/sonarqube-5.6/temp

This resolved the issue.



回答2:

I'm experiencing this problem too. Looking in the logs at /opt/sonar/logs/sonar.log I can see the following error:

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9122692 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

Used advice from here https://dev.mysql.com/doc/refman/5.6/en/packet-too-large.html

and here

PacketTooBigException when running a sonar analysis

and here

http://codefabulae.blogspot.co.uk/2012/05/sonar-analysis-and-mysql-max-packet.html

The final solution was to write this in to my mysql config /etc/my.cnf:

[mysqld]
max_allowed_packet=32M

restart mysqld

sudo service mysqld restart

and check it via

mysql <insert user credentials here>
mysql> show variables like "max_allowed%";

and then reboot sonar

sudo service sonar restart

Then my build stopped having the 500 error as mentioned.

This is how to fix the issue PacketTooBig, which is a likely root cause.



回答3:

I found the solution : User have to increase the max_allowed_packet size at the Mysql My.config file as well as Mysql connection string at the sonar.config.

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&max_allowed_packet=512M 


回答4:

Try this procedure, it worked for me:

  1. Stop the Sonar Server
  2. Go to Sonarqube Location and delete the contents in temp folder
  3. Start the Sonar Server and run again.