Issue
The core / plugin download tasks of an Update Center item are timing out in seconds even though the configured Download timeout in the Update Center item configuration is set to very large value:
WARNING c.c.p.u.t.DownloadPluginTask#run: timeout
java.net.SocketTimeoutException: timeout
at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
at java.base/java.io.InputStream.transferTo(InputStream.java:704)
at java.base/java.nio.file.Files.copy(Files.java:3078)
at com.cloudbees.plugins.updatecenter.UpdateCenter._downloadPlugin(UpdateCenter.java:896)
at com.cloudbees.plugins.updatecenter.transfers.DownloadPluginTask.run(DownloadPluginTask.java:41)
at com.cloudbees.plugins.updatecenter.transfers.TransferTask$ExecutableImpl.run(TransferTask.java:162)
at hudson.model.ResourceController.execute(ResourceController.java:101)
at hudson.model.Executor.run(Executor.java:442)
Explanation
The issue is caused by a read timeout problem and symptomatic of a very slow connection. The HTTP client used to download core /plugin binaries have a default read and connect timeout set to 10s. The exception happens when no data has transited for more than the read timeout configured (10s by default). Note: in case if a connect timeout, the exception message would read java.net.SocketTimeoutException: connect timed out.
Starting with version 4.82 of the [ci-plugin:cloudbees-update-center not found], the Connect and Read timeouts are configuration via system properties to accommodate to those environment with slower connections.
Resolution
-
Upgrade [ci-plugin:cloudbees-update-center not found] to version 4.82 or later (available under the CloudBees Assurance Program since CloudBees CI 2.414.2.2
-
Adjust the read / connect timeout using the system properties
com.cloudbees.plugins.updatecenter.UpdateCenter.HTTP_CONNECT_TIMEOUT_SECONDSandcom.cloudbees.plugins.updatecenter.UpdateCenter.HTTP_READ_TIMEOUT_SECONDS(this requires a restart)