Error during SonarQube Scanner execution, IllegalStateException

Template for a good bug report, formatted with Markdown:

  • versions used (SonarQube, Scanner, Plugin, and any relevant extension)
  • error observed (wrap logs/code around triple quote ``` for proper formatting)
  • steps to reproduce
  • potential workaround

We’re using SonarQube Enterprise 7.9 (26994) with Azure DevOps build pipelines. We typically use Azure-Hosted VMs for our build pipelines, so the plugins have to be downloaded on every run.

This download problem is intermittent, and I doubt it could be reliably reproduced. Most likely it’s a firewall issue between Azure DevOps and our SonarQube server, but I’m disappointed that this process is so brittle that it doesn’t recover from a transient network hiccup.

Also of note: the build I copied this error stack from is a DotNet Core, C#, Service Fabric solution. There’s no Python or anything remotely like it anywhere in this codebase. I have another build that failed today downloading the SonarScala plugin. Also something completely unnecessary.

In addition to the flat-out failures because of plugins we don’t need anyway, I recently researched the scanner’s performance in our build pipelines, because people were complaining about how long it takes compared to other steps. What I discovered (because we use Azure hosts) is that the scanner downloads EVERY plugin on EVERY build, and it appears that each one is a separate round-trip to the server. The typical scan on this solution takes about 2 minutes, 30 seconds, and over two minutes of that is in HTTP calls to the SonarQube server.

Can we consider adding project-level configuration so that we can restrict the list of downloaded plugins for a project to only those plugins that are actually needed? Or have a component in the scanner that pre-analyzes the source to determine which plugins might be necessary?

##[error]ERROR: Error during SonarQube Scanner execution
ERROR: Error during SonarQube Scanner execution
##[error]java.lang.IllegalStateException: Fail to download plugin [python] into C:\Users\VssAdministrator\.sonar\_tmp\fileCache8676825692401329887.tmp
java.lang.IllegalStateException: Fail to download plugin [python] into C:\Users\VssAdministrator\.sonar\_tmp\fileCache8676825692401329887.tmp
##[error]at org.sonar.scanner.bootstrap.PluginFiles.downloadBinaryTo(PluginFiles.java:152)
	at org.sonar.scanner.bootstrap.PluginFiles.downloadBinaryTo(PluginFiles.java:152)
##[error]at org.sonar.scanner.bootstrap.PluginFiles.download(PluginFiles.java:108)
	at org.sonar.scanner.bootstrap.PluginFiles.download(PluginFiles.java:108)
##[error]at org.sonar.scanner.bootstrap.PluginFiles.get(PluginFiles.java:89)
	at org.sonar.scanner.bootstrap.PluginFiles.get(PluginFiles.java:89)
##[error]at org.sonar.scanner.bootstrap.ScannerPluginInstaller.loadPlugins(ScannerPluginInstaller.java:77)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.installRemotes(ScannerPluginInstaller.java:60)
	at org.sonar.scanner.bootstrap.ScannerPluginRepository.start(ScannerPluginRepository.java:59)
	at org.sonar.core.platform.StartableCloseableSafeLifecyleStrategy.start(StartableCloseableSafeLifecyleStrategy.java:40)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.loadPlugins(ScannerPluginInstaller.java:77)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.installRemotes(ScannerPluginInstaller.java:60)
	at org.sonar.scanner.bootstrap.ScannerPluginRepository.start(ScannerPluginRepository.java:59)
	at org.sonar.core.platform.StartableCloseableSafeLifecyleStrategy.start(StartableCloseableSafeLifecyleStrategy.java:40)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
##[error]at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)
	at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)
##[error]at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
	at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
##[error]at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
##[error]at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
##[error]at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
##[error]at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
##[error]at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
##[error]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
##[error]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
##[error]at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.io.EOFException
	at okio.RealBufferedSource.require(RealBufferedSource.java:65)
	at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.java:307)
	at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.java:492)
	at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.java:471)
	at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.java:286)
	at okio.RealBufferedSource$1.read(RealBufferedSource.java:447)
	at java.io.InputStream.read(InputStream.java:101)