Skip to content

Commit a8495eb

Browse files
authored
Revert "Retrieve resolved package versions in parallel" (#8217)
Reverts #8203 This is causing crashes in SwiftPM during the parallelized checkout. The checkouts update the workspace state and then save it. The workspace save data is not protected against multi-thread access while the save is walking the data which is causing the crash.
1 parent 0340bb1 commit a8495eb

File tree

1 file changed

+20
-25
lines changed

1 file changed

+20
-25
lines changed

Sources/Workspace/Workspace+Dependencies.swift

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -426,31 +426,26 @@ extension Workspace {
426426
}
427427

428428
// Retrieve the required resolved packages.
429-
await withThrowingTaskGroup(of: Void.self) { taskGroup in
430-
for resolvedPackage in requiredResolvedPackages {
431-
let observabilityScope = observabilityScope.makeChildScope(
432-
description: "retrieving resolved package versions for dependencies",
433-
metadata: resolvedPackage.packageRef.diagnosticsMetadata
434-
)
435-
taskGroup.addTask {
436-
await observabilityScope.trap {
437-
switch resolvedPackage.packageRef.kind {
438-
case .localSourceControl, .remoteSourceControl:
439-
_ = try await self.checkoutRepository(
440-
package: resolvedPackage.packageRef,
441-
at: resolvedPackage.state,
442-
observabilityScope: observabilityScope
443-
)
444-
case .registry:
445-
_ = try await self.downloadRegistryArchive(
446-
package: resolvedPackage.packageRef,
447-
at: resolvedPackage.state,
448-
observabilityScope: observabilityScope
449-
)
450-
default:
451-
throw InternalError("invalid resolved package type \(resolvedPackage.packageRef.kind)")
452-
}
453-
}
429+
for resolvedPackage in requiredResolvedPackages {
430+
await observabilityScope.makeChildScope(
431+
description: "retrieving resolved package versions for dependencies",
432+
metadata: resolvedPackage.packageRef.diagnosticsMetadata
433+
).trap {
434+
switch resolvedPackage.packageRef.kind {
435+
case .localSourceControl, .remoteSourceControl:
436+
_ = try await self.checkoutRepository(
437+
package: resolvedPackage.packageRef,
438+
at: resolvedPackage.state,
439+
observabilityScope: observabilityScope
440+
)
441+
case .registry:
442+
_ = try await self.downloadRegistryArchive(
443+
package: resolvedPackage.packageRef,
444+
at: resolvedPackage.state,
445+
observabilityScope: observabilityScope
446+
)
447+
default:
448+
throw InternalError("invalid resolved package type \(resolvedPackage.packageRef.kind)")
454449
}
455450
}
456451
}

0 commit comments

Comments
 (0)