From f33819da60e3140c2256e1fd8370fb63c8a68321 Mon Sep 17 00:00:00 2001 From: Vadim Smal Date: Tue, 19 Jul 2022 17:58:47 +0100 Subject: [PATCH] Rename max_concurrent_requests to upload_batch_size --- README.md | 2 +- .../XCRemoteCache/Commands/Postbuild/XCPostbuild.swift | 2 +- .../XCRemoteCache/Commands/Prepare/XCPrepareMark.swift | 2 +- Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift | 8 ++++---- .../Network/RemoteNetworkClientAbstractFactory.swift | 8 ++++---- .../Network/ReplicatedRemotesNetworkClient.swift | 10 +++++----- .../Network/ReplicatedRemotesNetworkClientTests.swift | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index efcb868..8f72444 100755 --- a/README.md +++ b/README.md @@ -299,7 +299,7 @@ _Note that for the `producer` mode, the prebuild build phase and `xccc`, `xcld`, | `download_retries` | Number of retries for download requests | `0` | ⬜️ | | `upload_retries` | Number of retries for upload requests | `3` | ⬜️ | | `retry_delay` | Delay between retries in seconds | `10` | ⬜️ | -| `max_concurrent_requests` | Maximum number of simultaneous requests. 0 means no limits | `0` | ⬜️ | +| `upload_batch_size` | Maximum number of simultaneous requests. 0 means no limits | `0` | ⬜️ | | `request_custom_headers` | Dictionary of extra HTTP headers for all remote server requests | `[]` | ⬜️ | | `thin_target_mock_filename` | Filename (without an extension) of the compilation input file that is used as a fake compilation for the forced-cached target (aka thin target) | `standin` | ⬜️ | | `focused_targets` | A list of all targets that are not thinned. If empty, all targets are meant to be non-thin | `[]` | ⬜️ | diff --git a/Sources/XCRemoteCache/Commands/Postbuild/XCPostbuild.swift b/Sources/XCRemoteCache/Commands/Postbuild/XCPostbuild.swift index fd589e8..9953619 100644 --- a/Sources/XCRemoteCache/Commands/Postbuild/XCPostbuild.swift +++ b/Sources/XCRemoteCache/Commands/Postbuild/XCPostbuild.swift @@ -131,7 +131,7 @@ public class XCPostbuild { mode: context.mode, downloadStreamURL: context.recommendedCacheAddress, upstreamStreamURL: context.cacheAddresses, - maxConcurrentRequests: config.maxConcurrentRequests, + uploadBatchSize: config.uploadBatchSize, networkClient: networkClient, urlBuilderFactory: { try URLBuilderImpl( diff --git a/Sources/XCRemoteCache/Commands/Prepare/XCPrepareMark.swift b/Sources/XCRemoteCache/Commands/Prepare/XCPrepareMark.swift index c2cf028..15d679c 100644 --- a/Sources/XCRemoteCache/Commands/Prepare/XCPrepareMark.swift +++ b/Sources/XCRemoteCache/Commands/Prepare/XCPrepareMark.swift @@ -77,7 +77,7 @@ public class XCPrepareMark { mode: .producer, downloadStreamURL: context.recommendedCacheAddress, upstreamStreamURL: context.cacheAddresses, - maxConcurrentRequests: config.maxConcurrentRequests, + uploadBatchSize: config.uploadBatchSize, networkClient: networkClient ) { [configuration, platform] cacheAddress in // Prepare URLs don't include target name or envFingperint, which are valid only for a target level diff --git a/Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift b/Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift index 69a10aa..313d2bf 100644 --- a/Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift +++ b/Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift @@ -86,7 +86,7 @@ public struct XCRemoteCacheConfig: Encodable { /// Delay between retries in seconds var retryDelay: Double = 10.0 /// Maximum number of simultaneous requests. 0 means no limits - var maxConcurrentRequests: Int = 0 + var uploadBatchSize: Int = 0 /// Extra headers appended to all remote HTTP(S) requests var requestCustomHeaders: [String: String] = [:] /// Filename (without an extension) of the compilation input file that is used @@ -180,7 +180,7 @@ extension XCRemoteCacheConfig { merge.downloadRetries = scheme.downloadRetries ?? downloadRetries merge.uploadRetries = scheme.uploadRetries ?? uploadRetries merge.retryDelay = scheme.retryDelay ?? retryDelay - merge.maxConcurrentRequests = scheme.maxConcurrentRequests ?? maxConcurrentRequests + merge.uploadBatchSize = scheme.uploadBatchSize ?? uploadBatchSize merge.requestCustomHeaders = scheme.requestCustomHeaders ?? requestCustomHeaders merge.thinTargetMockFilename = scheme.thinTargetMockFilename ?? thinTargetMockFilename merge.focusedTargets = scheme.focusedTargets ?? focusedTargets @@ -250,7 +250,7 @@ struct ConfigFileScheme: Decodable { let downloadRetries: Int? let uploadRetries: Int? let retryDelay: Double? - let maxConcurrentRequests: Int? + let uploadBatchSize: Int? let requestCustomHeaders: [String: String]? let thinTargetMockFilename: String? let focusedTargets: [String]? @@ -300,7 +300,7 @@ struct ConfigFileScheme: Decodable { case downloadRetries = "download_retries" case uploadRetries = "upload_retries" case retryDelay = "retry_delay" - case maxConcurrentRequests = "max_concurrent_requests" + case uploadBatchSize = "upload_batch_size" case requestCustomHeaders = "request_custom_headers" case thinTargetMockFilename = "thin_target_mock_filename" case focusedTargets = "focused_targets" diff --git a/Sources/XCRemoteCache/Network/RemoteNetworkClientAbstractFactory.swift b/Sources/XCRemoteCache/Network/RemoteNetworkClientAbstractFactory.swift index b28f1ac..0cb18fe 100644 --- a/Sources/XCRemoteCache/Network/RemoteNetworkClientAbstractFactory.swift +++ b/Sources/XCRemoteCache/Network/RemoteNetworkClientAbstractFactory.swift @@ -27,20 +27,20 @@ class RemoteNetworkClientAbstractFactory { private let upstreamStreamURL: [URL] private let networkClient: NetworkClient private let urlBuilderFactory: (URL) throws -> URLBuilder - private let maxConcurrentRequests: Int + private let uploadBatchSize: Int init( mode: Mode, downloadStreamURL: URL, upstreamStreamURL: [URL], - maxConcurrentRequests: Int, + uploadBatchSize: Int, networkClient: NetworkClient, urlBuilderFactory: @escaping (URL) throws -> URLBuilder ) { self.mode = mode self.downloadStreamURL = downloadStreamURL self.upstreamStreamURL = upstreamStreamURL - self.maxConcurrentRequests = maxConcurrentRequests + self.uploadBatchSize = uploadBatchSize self.networkClient = networkClient self.urlBuilderFactory = urlBuilderFactory } @@ -59,7 +59,7 @@ class RemoteNetworkClientAbstractFactory { networkClient, download: downloadURLBuilder, uploads: upstreamBuilders, - maxConcurrentRequests: maxConcurrentRequests + uploadBatchSize: uploadBatchSize ) case .consumer: return RemoteNetworkClientImpl(networkClient, downloadURLBuilder) diff --git a/Sources/XCRemoteCache/Network/ReplicatedRemotesNetworkClient.swift b/Sources/XCRemoteCache/Network/ReplicatedRemotesNetworkClient.swift index 0d8eb3f..571d66f 100644 --- a/Sources/XCRemoteCache/Network/ReplicatedRemotesNetworkClient.swift +++ b/Sources/XCRemoteCache/Network/ReplicatedRemotesNetworkClient.swift @@ -23,12 +23,12 @@ import Foundation class ReplicatedRemotesNetworkClient: RemoteNetworkClientImpl { private let networkClient: NetworkClient private let uploadURLBuilders: [URLBuilder] - private let maxConcurrentRequests: Int + private let uploadBatchSize: Int - init(_ networkClient: NetworkClient, download: URLBuilder, uploads uploadURLBuilders: [URLBuilder], maxConcurrentRequests: Int) { + init(_ networkClient: NetworkClient, download: URLBuilder, uploads uploadURLBuilders: [URLBuilder], uploadBatchSize: Int) { self.networkClient = networkClient self.uploadURLBuilders = uploadURLBuilders - self.maxConcurrentRequests = maxConcurrentRequests + self.uploadBatchSize = uploadBatchSize super.init(networkClient, download) } @@ -41,7 +41,7 @@ class ReplicatedRemotesNetworkClient: RemoteNetworkClientImpl { let group = DispatchGroup() var results: [Result] = Array(repeating: .failure(.noResponse), count: urls.count) urls.enumerated().forEach { index, url in - if maxConcurrentRequests > 0 && index > 0 && index % maxConcurrentRequests == 0 { + if uploadBatchSize > 0 && index > 0 && index % uploadBatchSize == 0 { group.wait() } group.enter() @@ -63,7 +63,7 @@ class ReplicatedRemotesNetworkClient: RemoteNetworkClientImpl { let group = DispatchGroup() var results: [Result] = Array(repeating: .failure(.noResponse), count: urls.count) urls.enumerated().forEach { index, url in - if maxConcurrentRequests > 0 && index > 0 && index % maxConcurrentRequests == 0 { + if uploadBatchSize > 0 && index > 0 && index % uploadBatchSize == 0 { group.wait() } group.enter() diff --git a/Tests/XCRemoteCacheTests/Network/ReplicatedRemotesNetworkClientTests.swift b/Tests/XCRemoteCacheTests/Network/ReplicatedRemotesNetworkClientTests.swift index 70cb454..cc2f6dc 100644 --- a/Tests/XCRemoteCacheTests/Network/ReplicatedRemotesNetworkClientTests.swift +++ b/Tests/XCRemoteCacheTests/Network/ReplicatedRemotesNetworkClientTests.swift @@ -43,7 +43,7 @@ class ReplicatedRemotesNetworkClientTests: XCTestCase { networkClient, download: download, uploads: uploads, - maxConcurrentRequests: 1 + uploadBatchSize: 1 ) } @@ -81,7 +81,7 @@ class ReplicatedRemotesNetworkClientTests: XCTestCase { networkClient, download: download, uploads: uploads, - maxConcurrentRequests: 10 + uploadBatchSize: 10 ) try client.uploadSynchronously(localSampleFile, as: .artifact(id: "id1"))