diff --git a/Sources/ContainerizationOCI/Client/LocalOCILayoutClient.swift b/Sources/ContainerizationOCI/Client/LocalOCILayoutClient.swift index 4a799011..1489aeef 100644 --- a/Sources/ContainerizationOCI/Client/LocalOCILayoutClient.swift +++ b/Sources/ContainerizationOCI/Client/LocalOCILayoutClient.swift @@ -73,7 +73,8 @@ package final class LocalOCILayoutClient: ContentClient { ) async throws where T.Element == ByteBuffer { let input = try streamGenerator() - try await self.cs.ingest { dir in + let (id, dir) = try await self.cs.newIngestSession() + do { let into = dir.appendingPathComponent(descriptor.digest.trimmingDigestPrefix) guard FileManager.default.createFile(atPath: into.path, contents: nil) else { throw Error.cannotCreateFile @@ -96,6 +97,9 @@ package final class LocalOCILayoutClient: ContentClient { } } } + try await self.cs.completeIngestSession(id) + } catch { + try await self.cs.cancelIngestSession(id) } } }