Environment:
- SonarCloud Extension for Azure DevOps: 3.4.3
- Scanner: SonarScanner 5.0.2.4997 / MSBuild 10.3
- Java Version: 21.0.9 (Eclipse Adoptium)
- Agent OS: Windows Server 2025 (Hosted Agent)
Issue Summary: Our “Run Code Analysis” task completes the analysis and successfully uploads the report to SonarCloud, but then immediately crashes with a Spring container shutdown stack trace. This appears to be a regression of the known “failed to delete temp folder” issue on Windows agents, specifically occurring as a “silent” error before the Spring bean destruction.
Key Evidence from Logs:
- Successful Upload: The logs confirm: INFO: ANALYSIS SUCCESSFUL. You can find the results at: SonarQube Cloud
- Shutdown Crash: Immediately after the upload, the scanner triggers a stopComponents call that fails.
- Silent Failure: There is no explicit AccessDeniedException logged, but the process terminates during the cleanup of the working directory: D:\a\1.sonarqube\out.sonar
Full Stack Trace:
INFO: Successfully sent architecture data
2026-03-03T12:50:34.2323973Z INFO: Sensor cache published successfully
2026-03-03T12:50:34.3748272Z ##[error]ERROR: Failed to delete temp folder
java.nio.file.FileSystemException: D:\a\1\.sonarqube\out\.sonar\.sonartmp\architecture_graphs3134017834827781898.pb: The process cannot access the file because it is being used by another process
at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
at java.base/java.nio.file.Files.deleteIfExists(Unknown Source)
at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:106)
at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:101)
at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
at org.sonar.api.impl.utils.DefaultTempFolder.clean(DefaultTempFolder.java:82)
at org.sonar.api.impl.utils.DefaultTempFolder.stop(DefaultTempFolder.java:97)
at org.sonar.scanner.spring.StartableBeanPostProcessor.postProcessBeforeDestruction(StartableBeanPostProcessor.java:34)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:795)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:745)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1500)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:704)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1493)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1246)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1207)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1153)
at org.sonar.scanner.spring.SpringComponentContainer.stopComponents(SpringComponentContainer.java:216)
at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:192)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:150)
at org.sonar.scanner.spring.SpringComponentContainer.startComponents(SpringComponentContainer.java:208)
at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:187)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:123)
at org.sonarsource.scanner.cli.Main.execute(Main.java:78)
at org.sonarsource.scanner.cli.Main.main(Main.java:59)
2026-03-03T12:50:34.3963512Z ERROR: Failed to delete temp folder
2026-03-03T12:50:34.3965395Z java.nio.file.FileSystemException: D:\a\1\.sonarqube\out\.sonar\.sonartmp\architecture_graphs3134017834827781898.pb: The process cannot access the file because it is being used by another process
2026-03-03T12:50:34.3966753Z at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
2026-03-03T12:50:34.4345525Z at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
2026-03-03T12:50:34.4346825Z at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
2026-03-03T12:50:34.4347690Z at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
2026-03-03T12:50:34.4348298Z at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
2026-03-03T12:50:34.4348857Z at java.base/java.nio.file.Files.deleteIfExists(Unknown Source)
2026-03-03T12:50:34.4350045Z at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:106)
2026-03-03T12:50:34.4350742Z at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:101)
2026-03-03T12:50:34.4351339Z at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
2026-03-03T12:50:34.4351852Z at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
2026-03-03T12:50:34.4352420Z at org.sonar.api.impl.utils.DefaultTempFolder.clean(DefaultTempFolder.java:82)
2026-03-03T12:50:34.4438777Z at org.sonar.api.impl.utils.DefaultTempFolder.stop(DefaultTempFolder.java:97)
2026-03-03T12:50:34.4441340Z at org.sonar.scanner.spring.StartableBeanPostProcessor.postProcessBeforeDestruction(StartableBeanPostProcessor.java:34)
2026-03-03T12:50:34.4442148Z at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
2026-03-03T12:50:34.4442778Z at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:795)
2026-03-03T12:50:34.4444981Z at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:745)
2026-03-03T12:50:34.4445681Z at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1500)
2026-03-03T12:50:34.4446350Z at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:704)
2026-03-03T12:50:34.4447035Z at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1493)
2026-03-03T12:50:34.4447853Z at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1246)
2026-03-03T12:50:34.4448521Z at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1207)
2026-03-03T12:50:34.4449686Z at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1153)
2026-03-03T12:50:34.4450326Z at org.sonar.scanner.spring.SpringComponentContainer.stopComponents(SpringComponentContainer.java:216)
2026-03-03T12:50:34.4450953Z at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:192)
2026-03-03T12:50:34.4451572Z at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:150)
2026-03-03T12:50:34.4452198Z at org.sonar.scanner.spring.SpringComponentContainer.startComponents(SpringComponentContainer.java:208)
2026-03-03T12:50:34.4452838Z at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:187)
2026-03-03T12:50:34.4453415Z at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
2026-03-03T12:50:34.4454039Z at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
2026-03-03T12:50:34.4454647Z at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
2026-03-03T12:50:34.4455239Z at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
2026-03-03T12:50:34.4455747Z at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2026-03-03T12:50:34.4456308Z at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
2026-03-03T12:50:34.4456854Z at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
2026-03-03T12:50:34.4457518Z at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
2026-03-03T12:50:34.4458100Z at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
2026-03-03T12:50:34.4458656Z at org.sonarsource.scanner.cli.Main.execute(Main.java:123)
2026-03-03T12:50:34.4459173Z at org.sonarsource.scanner.cli.Main.execute(Main.java:78)
2026-03-03T12:50:34.4459856Z at org.sonarsource.scanner.cli.Main.main(Main.java:59)
Reference to Similar Issues:
Questions for the Team:
- Is this a known regression in Scanner 5.0.2.4997 when running on Windows Server 2025?
- Since the analysis is successful, is there a way to suppress this cleanup failure so it doesn’t break our build pipeline?
Regards,
Ganga.