Skip to content

Commit 464f12d

Browse files
committed
CLDSRV-863: handle NoSuchKey error in isCompleteMPUInProgress
1 parent 4838bb0 commit 464f12d

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

lib/services.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,16 @@ const services = {
682682
return metadata.getObjectMD(mpuBucketName, mpuOverviewKey, {}, log,
683683
(err, res) => {
684684
if (err) {
685+
if (err.is && err.is.NoSuchKey) {
686+
// The overview key no longer exists, meaning completeMultipartUpload
687+
// already ran to completion and cleaned up the MPU bucket.
688+
// This is a race condition: objectPutPart checked for old
689+
// part locations after completeMultipartUpload deleted the overview.
690+
// Returning true (complete in progress) prevents objectPutPart
691+
// from deleting part data that may have already been committed
692+
// as the final object.
693+
return cb(null, true);
694+
}
685695
log.error('error getting the overview object from mpu bucket', {
686696
error: err,
687697
method: 'services.isCompleteMPUInProgress',
@@ -737,7 +747,7 @@ const services = {
737747
metadata.getObjectMD(mpuBucket.getName(), mpuOverviewKey,
738748
{}, log, (err, storedMetadata) => {
739749
if (err) {
740-
if (err.is.NoSuchKey) {
750+
if (err.is && err.is.NoSuchKey) {
741751
return cb(errors.NoSuchUpload);
742752
}
743753
log.error('error from metadata', { error: err });

0 commit comments

Comments
 (0)