Skip to content

Commit a16dd19

Browse files
committed
fix: set isFinalized flag before async pack.entry() to prevent race condition
1 parent 0b7a770 commit a16dd19

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

scopes/scope/objects/objects/object-list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,11 +231,11 @@ export class ObjectList {
231231
logger.warn(`fromObjectStreamToTar (${scopeName}), received 'end' event but pack already finalized`);
232232
return;
233233
}
234+
isFinalized = true;
234235
const endFile: EndFile = { numOfFiles, scopeName };
235236
logger.debug('fromObjectStreamToTar, finished sending data', endFile);
236237
pack.entry({ name: TAR_STREAM_END_FILENAME }, JSON.stringify(endFile));
237238
pack.finalize();
238-
isFinalized = true;
239239
});
240240
readable.on('error', (err) => {
241241
if (isFinalized) {
@@ -245,11 +245,11 @@ export class ObjectList {
245245
);
246246
return;
247247
}
248+
isFinalized = true;
248249
const errorMessage = err.message || `unexpected error (${err.name})`;
249250
logger.error(`ObjectList.fromObjectStreamToTar, streaming an error as a file after ${numOfFiles} files`, err);
250251
pack.entry({ name: TAR_STREAM_ERROR_FILENAME }, errorMessage);
251252
pack.finalize();
252-
isFinalized = true;
253253
});
254254
return pack;
255255
}

0 commit comments

Comments
 (0)