diff --git a/packages/core/data-transfer/src/strapi/providers/remote-destination/index.ts b/packages/core/data-transfer/src/strapi/providers/remote-destination/index.ts index d87e9b6a7d..d71473e9ee 100644 --- a/packages/core/data-transfer/src/strapi/providers/remote-destination/index.ts +++ b/packages/core/data-transfer/src/strapi/providers/remote-destination/index.ts @@ -303,15 +303,22 @@ class RemoteStrapiDestinationProvider implements IDestinationProvider { const startAssetsTransferOnce = this.#startStepOnce('assets'); const flush = async () => { - await this.#streamStep('assets', batch); + const streamError = await this.#streamStep('assets', batch); batch = []; + return streamError; }; - const safePush = async (chunk: client.TransferAssetFlow) => { + const safePush = async ( + chunk: client.TransferAssetFlow, + callback: (error?: Error | null) => void + ) => { batch.push(chunk); if (batchLength() >= batchSize) { - await flush(); + const streamError = await flush(); + if (streamError) { + return callback(streamError); + } } }; @@ -347,13 +354,20 @@ class RemoteStrapiDestinationProvider implements IDestinationProvider { const assetID = v4(); const { filename, filepath, stats, stream } = asset; - await safePush({ action: 'start', assetID, data: { filename, filepath, stats } }); + await safePush( + { + action: 'start', + assetID, + data: { filename, filepath, stats }, + }, + callback + ); for await (const chunk of stream) { - await safePush({ action: 'stream', assetID, data: chunk }); + await safePush({ action: 'stream', assetID, data: chunk }, callback); } - await safePush({ action: 'end', assetID }); + await safePush({ action: 'end', assetID }, callback); callback(); }, diff --git a/yarn.lock b/yarn.lock index b07260afcf..a57910f06f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6828,6 +6828,13 @@ resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.36.1.tgz#d4c01fdbbe909d128d1bf11c7f8b5431654c5b95" integrity sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw== +"@vscode/sqlite3@5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@vscode/sqlite3/-/sqlite3-5.0.8.tgz#72b07061c5f90a9dd598a5506f598fcc817fab90" + integrity sha512-6wvQdMjpi1kwYI5mfzm98siEQb2mlBKX4xdNtJFj/uNqb6wqd3JOhk+5FL7geR0hduXE5lHjv+q69jtsEtUJDA== + dependencies: + node-addon-api "^4.2.0" + "@vscode/sqlite3@5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@vscode/sqlite3/-/sqlite3-5.1.2.tgz#3b22f2bd8681a7193f2169b407ae364b7b2c2dec"