Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
5ecbaaf
utilities adaptation to comply with sdk migration
benzekrimaha Sep 24, 2025
fd45184
SUR tests sdk migration
benzekrimaha Sep 24, 2025
532fd7c
UTAPI tests sdk migration
benzekrimaha Sep 24, 2025
5c1fdd2
dependencies install
benzekrimaha Sep 24, 2025
943ba0c
kms tests related code update after sdk migration
benzekrimaha Sep 24, 2025
172e889
dependencies update
benzekrimaha Sep 24, 2025
c14d239
delete operation related tests migration
benzekrimaha Sep 30, 2025
bfc45c5
get operation related tests migration
benzekrimaha Sep 30, 2025
eec0c79
put operation related tests migration
benzekrimaha Sep 30, 2025
6cab547
config adaptation to migration
benzekrimaha Sep 30, 2025
d788c64
route related tests migration
benzekrimaha Sep 30, 2025
3324047
complete mpu related tests migration
benzekrimaha Sep 30, 2025
6d7c130
multiple backend related tests migration
benzekrimaha Sep 30, 2025
770e5f3
acl related tests migration
benzekrimaha Sep 30, 2025
b5b2dd8
listParts related tests migration
benzekrimaha Sep 30, 2025
71d7c95
objectCopy related tests migration
benzekrimaha Sep 30, 2025
af4f95b
objectTagging related tests migration
benzekrimaha Sep 30, 2025
c244695
versionning utility migration
benzekrimaha Oct 27, 2025
954f00f
tests utilities migration
benzekrimaha Oct 27, 2025
e6a0e37
mpu related tests migration
benzekrimaha Oct 27, 2025
319fafa
cors related tests migration
benzekrimaha Oct 27, 2025
8cae616
get operation related tests migration
benzekrimaha Oct 27, 2025
8dd5a90
copy operation related tests migration
benzekrimaha Oct 27, 2025
0d5f9f1
put operation related tests migration
benzekrimaha Oct 27, 2025
d737d0e
delete operation related tests migration
benzekrimaha Oct 27, 2025
e3b43ef
website related tests migration
benzekrimaha Oct 27, 2025
c1396ac
config migration
benzekrimaha Oct 27, 2025
6f05235
rest of object related tests migration
benzekrimaha Oct 27, 2025
1166011
additional dependencies install
benzekrimaha Oct 27, 2025
3656891
get operation related bucket tests migration
benzekrimaha Oct 28, 2025
966ccdd
delete operation related bucket tests migration
benzekrimaha Oct 28, 2025
67efdd2
put operation related bucket tests migration
benzekrimaha Oct 28, 2025
bac5758
other operations related bucket tests migration
benzekrimaha Oct 28, 2025
0f98b4c
quota related bucket tests migration
benzekrimaha Oct 28, 2025
3e2bdfc
dependencies install
benzekrimaha Oct 28, 2025
6862eeb
versionning utilities migration
benzekrimaha Oct 28, 2025
30dc643
object related versionning tests migration
benzekrimaha Oct 28, 2025
b8c48cf
bucket related versionning tests migration
benzekrimaha Oct 28, 2025
4b11b09
rest of versionning tests migration
benzekrimaha Oct 28, 2025
cd3af77
Search tests adaptation due to aws-sdk migration
benzekrimaha Oct 22, 2025
e05e03c
legacy tests adaptation due to aws-sdk migration
benzekrimaha Sep 23, 2025
0fec989
get service functional test service migration
benzekrimaha Sep 29, 2025
a1fff68
backbeat functional tests migration
benzekrimaha Dec 2, 2025
91fe932
aws-node-sdk bucket functional tests migration
benzekrimaha Dec 2, 2025
7408990
aws-node-sdk multiple backend tests migration
benzekrimaha Dec 2, 2025
0ff38c1
raw-node gcp object and bucket tests migration
benzekrimaha Dec 2, 2025
1c371b1
routBackbeat migration adaptation
benzekrimaha Dec 2, 2025
03dc295
aws-node-sdk test utils migration
benzekrimaha Dec 2, 2025
ac83417
raw-node rest of code migration
benzekrimaha Dec 2, 2025
b07e438
rest of code migration
benzekrimaha Dec 2, 2025
c2f4c3a
deps install
benzekrimaha Dec 2, 2025
0be0667
add ceph logs in CI for debug purposes in future
benzekrimaha Dec 2, 2025
b534e28
commenting out ceph tests from CI
benzekrimaha Dec 2, 2025
3699de7
getlocation functional aws-node-sdk test bucket lint
benzekrimaha Dec 2, 2025
b3e16fb
multiple backend aws-node-sdk lint fixup
benzekrimaha Dec 2, 2025
536ef7f
arsenal rebump
benzekrimaha Dec 4, 2025
1af0814
new bucket logging and rate limit tests migration
benzekrimaha Dec 4, 2025
1ce0df8
new bucket logging and rate limit tests migration
benzekrimaha Dec 4, 2025
cede1b9
new bucket logging and rate limit tests migration
benzekrimaha Dec 4, 2025
553c156
new bucket logging and rate limit tests migration
benzekrimaha Dec 4, 2025
768b263
latest arsenal bump
benzekrimaha Dec 5, 2025
6c49a49
fixups post reviews
benzekrimaha Dec 11, 2025
fc3948c
fixups post reviews
benzekrimaha Dec 11, 2025
5313153
fixups post reviews
benzekrimaha Dec 11, 2025
e69198c
post reviews fixups
benzekrimaha Dec 12, 2025
eee9699
bump arsenal with latest fixups
benzekrimaha Dec 18, 2025
1d9770c
bump arsenal with latest fixups
benzekrimaha Dec 18, 2025
7e3a81d
bump arsenal with latest fixups
benzekrimaha Dec 18, 2025
4f3c944
bump arsenal with latest fixups
benzekrimaha Dec 18, 2025
f9fbace
bump arsenal with latest fixups
benzekrimaha Dec 18, 2025
ce181cb
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
42ed39e
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
908ba8d
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
e30a7b0
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
c73a9c1
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
31d137c
bump arsenal with latest fixups
benzekrimaha Dec 19, 2025
80e3e93
fixups post reviews
benzekrimaha Dec 19, 2025
82472d0
fixups post reviews
benzekrimaha Dec 22, 2025
74d7db3
fixups post reviews
benzekrimaha Dec 22, 2025
1783b09
fixups post reviews
benzekrimaha Dec 22, 2025
df480a2
fixups post reviews
benzekrimaha Dec 22, 2025
9c8e3d1
fixups post reviews
benzekrimaha Dec 22, 2025
337c4e5
fixups post reviews
benzekrimaha Dec 23, 2025
49c2391
post review fixups
benzekrimaha Dec 23, 2025
d69ad15
utilities adaptation to comply with sdk migration
benzekrimaha Sep 24, 2025
35cb779
SUR tests sdk migration
benzekrimaha Sep 24, 2025
9020110
UTAPI tests sdk migration
benzekrimaha Sep 24, 2025
58acf92
dependencies install
benzekrimaha Sep 24, 2025
8e15fd9
kms tests related code update after sdk migration
benzekrimaha Sep 24, 2025
ff86e9c
dependencies update
benzekrimaha Sep 24, 2025
66668f5
delete operation related tests migration
benzekrimaha Sep 30, 2025
35e4ba6
get operation related tests migration
benzekrimaha Sep 30, 2025
5c44153
put operation related tests migration
benzekrimaha Sep 30, 2025
888d052
config adaptation to migration
benzekrimaha Sep 30, 2025
8734063
route related tests migration
benzekrimaha Sep 30, 2025
e6444a9
complete mpu related tests migration
benzekrimaha Sep 30, 2025
8fd5061
multiple backend related tests migration
benzekrimaha Sep 30, 2025
3c6f0ad
acl related tests migration
benzekrimaha Sep 30, 2025
f17060b
listParts related tests migration
benzekrimaha Sep 30, 2025
637dca6
objectCopy related tests migration
benzekrimaha Sep 30, 2025
ba804c6
objectTagging related tests migration
benzekrimaha Sep 30, 2025
1bba7d5
versionning utility migration
benzekrimaha Oct 27, 2025
b74528b
post reviews fixups
benzekrimaha Dec 10, 2025
409dbc2
tests utilities migration
benzekrimaha Oct 27, 2025
2550830
mpu related tests migration
benzekrimaha Oct 27, 2025
2ce3606
cors related tests migration
benzekrimaha Oct 27, 2025
e75adbd
get operation related tests migration
benzekrimaha Oct 27, 2025
630b603
copy operation related tests migration
benzekrimaha Oct 27, 2025
025bff0
put operation related tests migration
benzekrimaha Oct 27, 2025
9eb5777
delete operation related tests migration
benzekrimaha Oct 27, 2025
919334c
website related tests migration
benzekrimaha Oct 27, 2025
34cfeaf
config migration
benzekrimaha Oct 27, 2025
c8f535e
rest of object related tests migration
benzekrimaha Oct 27, 2025
6a5ae19
additional dependencies install
benzekrimaha Oct 27, 2025
fc23278
fixups post reviews
benzekrimaha Dec 11, 2025
4ce74c1
get operation related bucket tests migration
benzekrimaha Oct 28, 2025
f141dbf
delete operation related bucket tests migration
benzekrimaha Oct 28, 2025
3722120
put operation related bucket tests migration
benzekrimaha Oct 28, 2025
a133997
other operations related bucket tests migration
benzekrimaha Oct 28, 2025
5015974
quota related bucket tests migration
benzekrimaha Oct 28, 2025
fa7eeb2
dependencies install
benzekrimaha Oct 28, 2025
84669aa
fixups post reviews
benzekrimaha Dec 11, 2025
4f2f2f5
Merge remote-tracking branch 'origin/improvement/CLDSRV-724-versionni…
SylvainSenechal Dec 31, 2025
fac4ca5
Merge remote-tracking branch 'origin/improvement/CLDSRV-724-mdSearch-…
SylvainSenechal Dec 31, 2025
da1ccde
Merge remote-tracking branch 'origin/improvement/CLDSRV-724-legacy-re…
SylvainSenechal Dec 31, 2025
b453a76
Merge remote-tracking branch 'origin/improvement/CLDSRV-724-service-g…
SylvainSenechal Dec 31, 2025
7622457
Merge remote-tracking branch 'origin/improvement/CLDSRV-724-backbeat-…
SylvainSenechal Dec 31, 2025
e99920d
fixup after merge all
SylvainSenechal Dec 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/docker/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,9 @@ services:
ceph:
network_mode: "host"
profiles: ['ceph']
image: ghcr.io/scality/cloudserver/ci-ceph
image: ghcr.io/scality/cloudserver/ci-ceph
volumes:
- /tmp/artifacts/${JOB_NAME}/ceph:/artifacts
sproxyd:
network_mode: "host"
profiles: ['sproxyd']
Expand Down
62 changes: 40 additions & 22 deletions examples/node-md-search.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,46 @@
const { S3 } = require('aws-sdk');
const { S3Client, ListObjectsCommand } = require('@aws-sdk/client-s3');
const { NodeHttpHandler } = require('@smithy/node-http-handler');
const http = require('http');

const config = {
sslEnabled: false,
endpoint: 'http://127.0.0.1:8000',
signatureCache: false,
signatureVersion: 'v4',
region: 'us-east-1',
s3ForcePathStyle: true,
accessKeyId: 'accessKey1',
secretAccessKey: 'verySecretKey1',
forcePathStyle: true,
credentials: {
accessKeyId: 'accessKey1',
secretAccessKey: 'verySecretKey1',
},
requestHandler: new NodeHttpHandler({
httpAgent: new http.Agent({ keepAlive: false }),
}),
};
const s3Client = new S3(config);

const encodedSearch =
encodeURIComponent('x-amz-meta-color="blue"');
const req = s3Client.listObjects({ Bucket: 'bucketname' });
const s3Client = new S3Client(config);

const encodedSearch = encodeURIComponent('x-amz-meta-color="blue"');

const command = new ListObjectsCommand({ Bucket: 'bucketname' });

command.middlewareStack.add(
next => async args => {
if (args.request && args.request.path) {
// eslint-disable-next-line no-param-reassign
args.request.path = `${args.request.path}?search=${encodedSearch}`;
}
return next(args);
},
{
step: 'build',
name: 'addSearchParameter',
priority: 'high'
}
);

// the build event
req.on('build', () => {
req.httpRequest.path = `${req.httpRequest.path}?search=${encodedSearch}`;
});
req.on('success', res => {
process.stdout.write(`Result ${res.data}`);
});
req.on('error', err => {
process.stdout.write(`Error ${err}`);
});
req.send();
// Send command and handle response
s3Client.send(command)
.then(data => {
process.stdout.write(`Result ${JSON.stringify(data)}`);
})
.catch(err => {
process.stdout.write(`Error ${err}`);
});
37 changes: 36 additions & 1 deletion lib/routes/routeBackbeat.js
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,41 @@ function putMetadata(request, response, bucketInfo, objMd, log, callback) {
return metadata.putObjectMD(bucketName, objectKey, omVal, options, log,
(err, md) => {
if (err) {
// Handle duplicate key error during repair operation
// This can happen due to race conditions when multiple operations
// try to repair the master version simultaneously. Since repair
// is idempotent, if the master version already exists, we can
// treat this as success.
const errorMessage = err.message || err.toString() || '';
const isRepairDuplicateKeyError = options.repairMaster &&
(errorMessage.includes('E11000') ||
errorMessage.includes('duplicate key') ||
errorMessage.includes('repair'));

if (isRepairDuplicateKeyError) {
log.warn('duplicate key error during repair - treating as success', {
error: err,
method: 'putMetadata',
bucketName,
objectKey,
note: 'Repair operation is idempotent, master version already exists',
});
// Treat as success - the repair already completed
// Get the current metadata to return
return metadata.getObjectMD(bucketName, objectKey, {}, log,
(getErr, currentMD) => {
if (getErr) {
log.warn('could not retrieve metadata after repair duplicate key error', {
error: getErr,
method: 'putMetadata',
});
// Still treat as success since repair likely completed
return next(null, md || {});
}
return next(null, currentMD || md || {});
});
}

log.error('error putting object metadata', {
error: err,
method: 'putMetadata',
Expand Down Expand Up @@ -1521,7 +1556,7 @@ function routeBackbeatAPIProxy(request, response, requestContexts, log) {
});
return responseJSONBody(err, null, response, log);
}
// We don't use the authorization results for now
// We don't use the authorization results for now
// as the UI uses the external Cloudserver instance
// as a proxy to access the Backbeat API service.

Expand Down
15 changes: 12 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,20 @@
},
"homepage": "https://github.com/scality/S3#readme",
"dependencies": {
"@aws-sdk/client-iam": "^3.930.0",
"@aws-sdk/client-s3": "^3.908.0",
"@aws-sdk/client-sts": "^3.930.0",
"aws-sdk": "^2.1692.0",
"@aws-sdk/credential-providers": "^3.864.0",
"@aws-sdk/middleware-retry": "^3.374.0",
"@aws-sdk/protocol-http": "^3.374.0",
"@aws-sdk/s3-request-presigner": "^3.901.0",
"@aws-sdk/signature-v4": "^3.374.0",
"@azure/storage-blob": "^12.28.0",
"@hapi/joi": "^17.1.1",
"arsenal": "git+https://github.com/scality/Arsenal#8.2.43",
"@smithy/node-http-handler": "^3.0.0",
"arsenal": "git+https://github.com/scality/Arsenal#5bb6a3128b9d416023fc32c88a17a8822bc1c6d3",
"async": "2.6.4",
"aws-sdk": "^2.1692.0",
"bucketclient": "scality/bucketclient#8.2.7",
"bufferutil": "^4.0.8",
"commander": "^12.1.0",
Expand Down Expand Up @@ -63,7 +72,7 @@
"istanbul": "^0.4.5",
"istanbul-api": "^3.0.0",
"lolex": "^6.0.0",
"mocha": "^10.8.2",
"mocha": "^11.7.5",
"mocha-junit-reporter": "^2.2.1",
"mocha-multi-reporters": "^1.5.1",
"node-mocks-http": "^1.16.1",
Expand Down
Loading
Loading