From 706d7abae697f86e7df80545d3428289e26a1b92 Mon Sep 17 00:00:00 2001 From: Igor Demin Date: Thu, 20 Nov 2025 11:12:14 +0100 Subject: [PATCH] Increase Maven Upload socket timeout (#5486) Attempt to fix: ``` Caused by: java.net.SocketTimeoutException: Socket timeout has expired [url=https://public.jetbrains.space/api/http/projects/.../packages/repositories/.../packages/name:org.jetbrains.skiko%2Fskiko-jvm-runtime-linux_x64/versions/version:1.4.0-rc01?%24fields=%2A, socket_timeout=unknown] ms at io.ktor.client.network.sockets.TimeoutExceptionsKt.SocketTimeoutException(TimeoutExceptions.kt:30) at io.ktor.client.plugins.HttpTimeoutKt.SocketTimeoutException(HttpTimeout.kt:272) at io.ktor.client.engine.okhttp.OkUtilsKt.mapOkHttpException(OkUtils.kt:82) at io.ktor.client.engine.okhttp.OkUtilsKt.access$mapOkHttpException(OkUtils.kt:1) at io.ktor.client.engine.okhttp.OkHttpCallback.onFailure(OkUtils.kt:42) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:525) at COROUTINE_STACKTRACE_PRESERVATION_BOUNDARY.rethrow(Unknown Source) at space.jetbrains.api.runtime.stacktrace.RequestStacktraceKt.withPreservedStacktrace(RequestStacktrace.kt:13) at space.jetbrains.api.runtime.SpaceHttpClientKt.callSpaceApi(SpaceHttpClient.kt:128) at space.jetbrains.api.runtime.SpaceHttpClientKt.callSpaceApi$default(SpaceHttpClient.kt:80) at space.jetbrains.api.runtime.RestResource.callWithParameters(RestResource.kt:57) at space.jetbrains.api.runtime.RestResource.callWithParameters$default(RestResource.kt:50) at space.jetbrains.api.runtime.resources.projects.packages.repositories.packages.Versions.getPackageVersionDetails(Versions.kt:172) at space.jetbrains.api.runtime.resources.projects.packages.repositories.packages.Versions.getPackageVersionDetails$default(Versions.kt:162) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient$forEachPackageWithVersion$1$1.invokeSuspend(SpaceApiClient.kt:37) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient$forEachPackageWithVersion$1$1.invoke(SpaceApiClient.kt) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient$forEachPackageWithVersion$1$1.invoke(SpaceApiClient.kt) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient.forAllInAllBatches(SpaceApiClient.kt:76) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient.access$forAllInAllBatches(SpaceApiClient.kt:15) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient$forAllInAllBatches$1.invokeSuspend(SpaceApiClient.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:94) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:70) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48) at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient.withSpaceClient(SpaceApiClient.kt:52) at org.jetbrains.compose.internal.publishing.utils.SpaceApiClient.forEachPackageWithVersion(SpaceApiClient.kt:34) at org.jetbrains.compose.internal.publishing.FindModulesInSpaceTask.run(FindModulesInSpaceTask.kt:57) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) ... 117 more ``` happened 3 times in a row at [19-11-2025](https://teamcity.jetbrains.com/buildConfiguration/JetBrainsPublicProjects_Compose_AllPublicRelease/5677823) The default socket timeout is 10 seconds ([OkHttpEngine](https://github.com/ktorio/ktor/blob/c68f4ee0d5c37ed516498d705562528ee4c33be5/ktor-client/ktor-client-okhttp/jvm/src/io/ktor/client/engine/okhttp/OkHttpEngine.kt#L244 ), [OkHttpClient](https://github.com/square/okhttp/blob/5b23df713244f82f76cb05e8164d6320b6dc1379/okhttp/src/commonJvmAndroid/kotlin/okhttp3/OkHttpClient.kt#L1172)) Also replace deprecated calls by the suggested calls ## Testing 1. create a Space client key 2. set env. vars: COMPOSE_REPO_USERNAME, COMPOSE_DEV_REPO_PROJECT_ID, COMPOSE_REPO_KEY, COMPOSE_DEV_REPO_REPO_ID 3. run ``` ./gradlew -p=cli findComposeModules --info --stacktrace "-Pmaven.central.coordinates=org.jetbrains.androidx.lifecycle:*:2.10.0-alpha05,org.jetbrains.androidx.navigation3:*:1.0.0-alpha05,org.jetbrains.androidx.navigationevent:*:1.0.0-beta02,org.jetbrains.androidx.savedstate:*:1.4.0-rc01,org.jetbrains.androidx.window:*:1.5.0" "-Pmaven.central.deployName=CMP 1.10.0-beta02 (org.jetbrains.androidx)" --rerun-tasks ``` ## Release Notes N/A (cherry picked from commit 37f161ff0b788e93afb89cdaad2289100fa08c95) --- .../publishing/utils/SpaceApiClient.kt | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/ci/build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt b/ci/build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt index 7f18e44689a..5a14f0716db 100644 --- a/ci/build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt +++ b/ci/build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt @@ -7,10 +7,14 @@ package org.jetbrains.compose.internal.publishing.utils import io.ktor.client.* import io.ktor.client.engine.okhttp.* +import io.ktor.client.plugins.* import kotlinx.coroutines.runBlocking import space.jetbrains.api.runtime.* +import space.jetbrains.api.runtime.SpaceAuth.ClientCredentials import space.jetbrains.api.runtime.resources.projects -import space.jetbrains.api.runtime.types.* +import space.jetbrains.api.runtime.types.PackageData +import space.jetbrains.api.runtime.types.PackageRepositoryIdentifier +import space.jetbrains.api.runtime.types.ProjectIdentifier internal class SpaceApiClient( private val serverUrl: String, @@ -48,13 +52,18 @@ internal class SpaceApiClient( } } - private fun withSpaceClient(fn: suspend SpaceHttpClientWithCallContext.() -> Unit) { + private fun withSpaceClient(fn: suspend SpaceClient.() -> Unit) { runBlocking { - HttpClient(OkHttp).use { client -> - val space = SpaceHttpClient(client).withServiceAccountTokenSource( - serverUrl = serverUrl, - clientId = clientId, - clientSecret = clientSecret + HttpClient(OkHttp) { + configureKtorClientForSpace() + install(HttpTimeout) { + socketTimeoutMillis = 120_000 + } + }.use { client -> + val space = SpaceClient( + ktorClient = client, + appInstance = SpaceAppInstance(clientId, clientSecret, serverUrl), + auth = ClientCredentials(PermissionScope.fromString("**")) ) space.fn() } @@ -80,7 +89,7 @@ internal class SpaceApiClient( } } - private suspend fun SpaceHttpClientWithCallContext.forEachPackage( + private suspend fun SpaceClient.forEachPackage( projectId: ProjectIdentifier, repoId: PackageRepositoryIdentifier, fn: suspend (PackageData) -> Unit