Skip to content

Commit 195769a

Browse files
committed
✨ check that backend support versioning
1 parent da6bfb6 commit 195769a

2 files changed

Lines changed: 40 additions & 14 deletions

File tree

lib/routes/routeBackbeat.js

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -663,21 +663,34 @@ function putMetadata(request, response, bucketInfo, objMd, log, callback) {
663663
});
664664
},
665665
async () => {
666-
if (versioning && !objMd) {
667-
const masterObjectAndBucket =
668-
await metadata.getBucketAndObjectMDPromised(bucketName, objectKey, {}, log);
666+
if (!versioning || objMd) {
667+
return;
668+
}
669669

670-
if (!masterObjectAndBucket.obj) {
671-
return;
672-
}
670+
const storageType = headers['x-scal-storage-type'];
673671

674-
const masterObject = JSON.parse(masterObjectAndBucket.obj);
675-
const versioningPreprocessingResult =
676-
await versioningPreprocessingPromised(bucketName, bucketInfo, objectKey, masterObject, log);
672+
if (constants.versioningNotImplBackends[storageType]) {
673+
log.debug(
674+
'versioning is not implemented on the destination backend',
675+
{ method: 'putMetadata', error: errors.NotImplemented },
676+
);
677677

678-
if (versioningPreprocessingResult?.nullVersionId) {
679-
omVal.nullVersionId = versioningPreprocessingResult.nullVersionId;
680-
}
678+
return;
679+
}
680+
681+
const masterObjectAndBucket =
682+
await metadata.getBucketAndObjectMDPromised(bucketName, objectKey, {}, log);
683+
684+
if (!masterObjectAndBucket.obj) {
685+
return;
686+
}
687+
688+
const masterObject = JSON.parse(masterObjectAndBucket.obj);
689+
const versioningPreprocessingResult =
690+
await versioningPreprocessingPromised(bucketName, bucketInfo, objectKey, masterObject, log);
691+
692+
if (versioningPreprocessingResult?.nullVersionId) {
693+
omVal.nullVersionId = versioningPreprocessingResult.nullVersionId;
681694
}
682695
},
683696
next => {

tests/multipleBackend/routes/routeBackbeat.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2467,14 +2467,18 @@ describe('backbeat routes', () => {
24672467
], done);
24682468
});
24692469

2470-
it('should put tags if the source is Azure and tags are provided ' +
2470+
it.only('should put tags if the source is Azure and tags are provided ' +
24712471
'when completing the multipart upload', done => {
24722472
const containerName = getAzureContainerName(azureLocation);
24732473
const blob = uuidv4();
24742474
const multipleBackendPath =
24752475
`/_/backbeat/multiplebackenddata/${containerName}/${blob}`;
24762476
const uploadId = uuidv4().replace(/-/g, '');
24772477
let partData;
2478+
2479+
console.info(`Azure container name: ${containerName}`);
2480+
console.info({ azureLocation });
2481+
24782482
async.series([
24792483
next =>
24802484
makeRequest({
@@ -2528,7 +2532,16 @@ describe('backbeat routes', () => {
25282532
const tags = JSON.parse(result.metadata.tags);
25292533
assert.deepStrictEqual(tags, { key1: 'value1' });
25302534
return next();
2531-
}, next),
2535+
}, err => {
2536+
console.error({ err });
2537+
console.error('error getting blob properties 1');
2538+
next;
2539+
})
2540+
.catch(err => {
2541+
console.error({ err });
2542+
console.error('error getting blob properties 2', err);
2543+
return next(err);
2544+
}),
25322545
], done);
25332546
});
25342547
});

0 commit comments

Comments
 (0)