The CI sometimes fails at the step where a test tries to download a Gradle distribution.
This does not seem to be tied to a particular distribution. E.g. in this TC job we failed to download 9.3.1, 8.14.4 and 7.6.4:
An easy thing to try to alleviate this is to guard against this failure in particular and just retry.
For the broader picture, we should potentially reduce the number of downloads we do. It might be that we redanduntly download the same distributions many times during a single CI job, and we might do that for each platform x OS.
Stacktrace
org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-9.3.1-bin.zip'.
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:131)
at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:47)
at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:44)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:160)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:142)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:66)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
at java.base/java.lang.Thread.run(Thread.java:1474)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:50)
at org.gradle.tooling.internal.consumer.DefaultProjectConnection.getModel(DefaultProjectConnection.java:57)
at org.gradle.profiler.gradle.DefaultGradleBuildConfigurationReader.probe(DefaultGradleBuildConfigurationReader.java:132)
at org.gradle.profiler.gradle.DefaultGradleBuildConfigurationReader.doResolveVersion(DefaultGradleBuildConfigurationReader.java:93)
at org.gradle.profiler.gradle.DefaultGradleBuildConfigurationReader.readConfiguration(DefaultGradleBuildConfigurationReader.java:78)
at org.gradle.profiler.ScenarioLoader.adhocScenarios(ScenarioLoader.java:186)
at org.gradle.profiler.ScenarioLoader.doLoadScenarios(ScenarioLoader.java:178)
at org.gradle.profiler.ScenarioLoader.loadScenarios(ScenarioLoader.java:157)
at org.gradle.profiler.Main.run(Main.java:73)
at org.gradle.profiler.fixtures.AbstractBaseProfilerIntegrationTest.run(AbstractBaseProfilerIntegrationTest.groovy:88)
at org.gradle.profiler.AsyncProfilerGradleCrossVersionTest.profiles build CPU usage using async-profiler with tooling API and warm daemon(AsyncProfilerGradleCrossVersionTest.groovy:18)
Caused by: java.io.IOException: Downloading from https://services.gradle.org/distributions/gradle-9.3.1-bin.zip failed: timeout (10000ms)
at org.gradle.wrapper.Download.downloadInternal(Download.java:152)
at org.gradle.wrapper.Download.download(Download.java:110)
at org.gradle.tooling.internal.consumer.DistributionInstaller$AsyncDownload$1.run(DistributionInstaller.java:184)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:277)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:302)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:354)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:798)
at java.base/java.net.Socket$SocketInputStream.implRead(Socket.java:974)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:964)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:489)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:483)
at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1461)
at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1068)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:289)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:330)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:388)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:795)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:727)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1392)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1302)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:223)
at org.gradle.wrapper.Download.downloadInternal(Download.java:130)
... 2 more
The CI sometimes fails at the step where a test tries to download a Gradle distribution.
This does not seem to be tied to a particular distribution. E.g. in this TC job we failed to download
9.3.1,8.14.4and7.6.4:An easy thing to try to alleviate this is to guard against this failure in particular and just retry.
For the broader picture, we should potentially reduce the number of downloads we do. It might be that we redanduntly download the same distributions many times during a single CI job, and we might do that for each platform x OS.
Stacktrace