From c18576de9a14042d8181931473bbfefb590908e4 Mon Sep 17 00:00:00 2001 From: Dimitrios Vasilas Date: Wed, 2 Sep 2026 12:59:11 +0300 Subject: [PATCH 1/2] CLDSRV-986: Pass overhead fields when abortMPU cleans up after completeMPU The cleanup deletes the object or version an earlier CompleteMultipartUpload created; without the overhead fields the resulting oplog entry carries no owner id, which makes SUR hit an assert. (cherry picked from commit 4c27883e226613cac9cd410c409ad7b30efff5f2) --- lib/api/apiUtils/object/abortMultipartUpload.js | 1 + tests/unit/api/apiUtils/object/abortMultipartUpload.spec.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/lib/api/apiUtils/object/abortMultipartUpload.js b/lib/api/apiUtils/object/abortMultipartUpload.js index 914a5453ab..15be220ec0 100644 --- a/lib/api/apiUtils/object/abortMultipartUpload.js +++ b/lib/api/apiUtils/object/abortMultipartUpload.js @@ -167,6 +167,7 @@ function abortMultipartUpload(authInfo, bucketName, objectKey, uploadId, log, const options = preprocessingVersioningDelete( bucketName, destBucket, objectMD, objectMD.versionId, config.nullVersionCompatMode); options.replayId = uploadId; + options.overheadField = constants.overheadField; // This is a ghost metadata, without data loss, so skip oplog options.doesNotNeedOpogUpdate = true; diff --git a/tests/unit/api/apiUtils/object/abortMultipartUpload.spec.js b/tests/unit/api/apiUtils/object/abortMultipartUpload.spec.js index 43de69a276..e9c1965b9d 100644 --- a/tests/unit/api/apiUtils/object/abortMultipartUpload.spec.js +++ b/tests/unit/api/apiUtils/object/abortMultipartUpload.spec.js @@ -5,6 +5,7 @@ const { errors } = require('arsenal'); const async = require('async'); const crypto = require('crypto'); +const { overheadField } = require('../../../../../constants'); const abortMultipartUpload = require('../../../../../lib/api/apiUtils/object/abortMultipartUpload'); const { bucketPut } = require('../../../../../lib/api/bucketPut'); const initiateMultipartUpload = require('../../../../../lib/api/initiateMultipartUpload'); @@ -305,6 +306,8 @@ describe('abortMultipartUpload', () => { assert.ifError(err); sinon.assert.calledOnce(deleteObjectMDStub); assert.strictEqual(deleteObjectMDStub.getCall(0).args[2].versionId, 'orphan-vid'); + assert.deepStrictEqual( + deleteObjectMDStub.getCall(0).args[2].overheadField, overheadField); done(); }, { ...abortRequest, query: { uploadId: 'abort-id' } }); }); From 6b1d8f4d6542f99e576fbf2b520b2800a548614d Mon Sep 17 00:00:00 2001 From: Dimitrios Vasilas Date: Wed, 2 Sep 2026 18:12:48 +0300 Subject: [PATCH 2/2] Bump version to 9.2.24-6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c44d65c354..ab91602749 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zenko/cloudserver", - "version": "9.2.24-5", + "version": "9.2.24-6", "description": "Zenko CloudServer, an open-source Node.js implementation of a server handling the Amazon S3 protocol", "main": "index.js", "engines": {