"Can not add the same measure twice" on sonarqube 9.6.1 (yaml plugin)

After upgrade to 9.6.1 got error(I believe there were not changes in yaml plugin):

ERROR: Error during SonarScanner execution java.lang.UnsupportedOperationException: Can not add the same measure twice on terraform/xxx.yaml: DefaultMeasure[component=terraform/xxx.yaml,metric=Metric[uuid=,key=ncloc_data,description=,type=DATA,direction=0,domain=,name=ncloc_data,qualitative=false,userManaged=false,enabled=true,worstValue=,bestValue=,optimizedBestValue=false,hidden=false,deleteHistoricalData=false,decimalScale=],value=2=1;6=1;8=1;14=1;16=1;17=1;18=1;19=1;20=1;21=1;22=1;23=1;24=1;25=1;26=1;27=1;28=1;29=1;30=1;31=1;32=1;33=1;34=1;35=1;36=1;37=1;38=1;39=1;40=1;41=1;42=1;43=1;44=1;45=1;46=1;47=1;48=1;49=1;50=1;51=1;52=1;53=1;54=1;55=1;56=1;57=1;58=1;59=1;60=1;61=1;62=1;63=1;64=1;65=1;66=1;67=1;68=1;69=1;70=1;71=1;72=1;73=1;74=1;75=1;76=1;77=1;78=1;79=1;80=1;81=1;82=1;83=1;84=1;85=1;86=1;87=1;88=1;89=1;90=1;91=1;92=1;93=1;94=1;95=1;96=1;97=1;98=1;99=1;100=1;101=1;102=1;103=1;104=1;105=1;106=1;107=1;108=1;109=1;110=1;111=1;112=1;113=1;114=1;115=1;116=1;117=1;118=1;119=1;120=1;121=1;122=1;123=1;124=1;125=1;126=1;127=1;128=1;129=1;130=1;131=1;132=1;133=1;134=1;135=1;136=1;137=1;138=1;139=1;140=1;141=1;142=1;143=1;144=1;145=1;146=1;147=1;148=1;149=1;150=1;151=1;152=1;153=1;154=1;155=1;156=1;157=1;158=1;159=1;160=1;161=1;162=1;163=1;164=1;165=1;166=1;167=1;168=1;169=1;170=1;171=1;172=1;173=1;174=1;175=1;176=1;177=1;178=1;179=1;180=1;181=1;182=1;183=1;184=1;185=1;186=1;187=1;188=1;189=1;192=1;193=1;194=1;195=1;196=1;197=1;198=1;199=1;200=1;201=1;202=1;203=1;204=1;205=1;206=1;207=1;208=1;209=1;210=1;211=1;212=1;213=1;214=1;215=1;216=1;217=1;218=1;219=1;220=1;221=1;222=1;223=1;224=1;225=1;226=1;227=1;228=1;229=1;230=1,fromCore=false,storage=org.sonar.scanner.sensor.DefaultSensorStorage@661fb92c,saved=false] at org.sonar.scanner.sensor.DefaultSensorStorage.saveMeasure(DefaultSensorStorage.java:175) at org.sonar.scanner.sensor.DefaultSensorStorage.store(DefaultSensorStorage.java:135) at org.sonar.api.batch.sensor.measure.internal.DefaultMeasure.doSave(DefaultMeasure.java:96) at org.sonar.api.batch.sensor.internal.DefaultStorable.save(DefaultStorable.java:45) at org.sonar.scanner.DefaultFileLinesContext.save(DefaultFileLinesContext.java:97) at com.github.sbaudoin.sonar.plugins.yaml.linecounter.LineCounter.saveMeasures(LineCounter.java:81) at com.github.sbaudoin.sonar.plugins.yaml.linecounter.LineCounter.analyse(LineCounter.java:57) at com.github.sbaudoin.sonar.plugins.yaml.rules.YamlSensor.computeLinesMeasures(YamlSensor.java:137) at com.github.sbaudoin.sonar.plugins.yaml.rules.YamlSensor.execute(YamlSensor.java:112)

Installed plugins:

  • sonar-ansible-plugin-2.5.1.jar
  • sonar-shellcheck-plugin-2.5.0.jar
  • sonar-yaml-plugin-1.7.0.jar

Similar topic on plugin issue page:

1 Like

We have also encountered this issue and discovered that it seems to be related to the file in question first being analysed by the IaC Kubernetes Sensor. Disabling Kubernetes analysis for the project has resolved the issue (it isn’t a Kubernetes file), but would be interested in what the more-permanent solution/recommendation to this issue is, if there is any.

1 Like

Hi there, I encountered exactly the same issue on all our projects which used sonarscanner-cli (latest 4.7 for now but issue encountered in below versions too).
The issue concern all .yml files used for kubernetes.
Disabling kubernetes analysis resolved temporary the issue.
Thank you for your concerns about this relevant issue for us (around 20-30 projects are concerned in our company).

Hello,

please excuse the late feedback. It took me some time to reproduce the problem.

First of all, the problem that throws the exception is that
SonarQube only allows one measurement per file. This means that only one plugin can send measurements about a file to the server. Measurements are among others information about lines of code. In this case, the Kubernetes sensor sends the information first and then the SonarYAML sensor.

The Kubernetes sensor only creates measurements for the files that contain the Kubernetes file characteristics. Since SonarYAML is a community plugin, we cannot control that the sensor does not also generate measurements for these files and try to send them to the server. The same is true for code highlighting of YAML files.

In summary: The community plugin SonarYAML is not compatible with the current SonarQube version and needs an adjustment to not create metrics for these YAML files.

If the project is not about Kubernetes files but contains the mentioned Kubernetes file requirements, this error will occur at first. In this case, I can only recommend disabling the Kubernetes Analyze. However, we will also discuss internally how we can prevent this from happening.

Best,
Nils

2 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.