Use async HTTPClient
in BinaryArtifactsManager
#8087
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
To adopt Swift concurrency in
ManifestLoader
, we need to convertRegistryClient
first, which then would require use ofHTTPClient
instead ofLegacyHTTPClient
. That would also cascade toBinaryArtifactsManager
, so I'm starting there first to make PRs smaller.Modifications:
Converted (and as a consequence, simplified) code in
Workspace+BinaryArtifacts.swift
, also adoptedHTTPClient
inWorkspaceTests
to fix tests after the change.Converted some error diagnostics to conform to
Error
, which makes control flow withObservabilityScope.trap
wrapper easier to write and read.Result:
One major previous adopter of
LegacyHTTPClient
is now compatible with Swift concurrency.Since
BinaryArtifactsManager
was blocking Swift concurrency thread pool and also used.sharedConcurrent
dispatch queue, this potentially fixes thread explosion/deadlocks that may have been caused by previously broken code.