1
0
Fork 0
mirror of https://code.forgejo.org/actions/cache.git synced 2024-10-17 06:34:41 +02:00

Merge pull request #9 from whywaita/fix/use-next-token

Fix to use next token
This commit is contained in:
Tachibana waita 2023-04-06 14:59:14 +09:00 committed by GitHub
commit e4ae4c2f49
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 90 additions and 147 deletions

23
dist/restore/index.js vendored
View file

@ -8147,15 +8147,26 @@ function getCacheEntryS3(s3Options, s3BucketName, keys, paths) {
const s3client = new client_s3_1.S3Client(s3Options);
let contents = new Array();
let s3ContinuationToken = null;
let count = 0;
const param = {
Bucket: s3BucketName
};
for (;;) {
core.debug(`ListObjects Count: ${count}`);
if (s3ContinuationToken != null) {
param.ContinuationToken = s3ContinuationToken;
const response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param));
}
let response;
try {
response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param));
}
catch (e) {
throw new Error(`Error from S3: ${e}`);
}
if (!response.Contents) {
throw new Error(`Cannot found object in bucket ${s3BucketName}`);
}
core.debug(`Found objects ${response.Contents.length}`);
const found = response.Contents.find((content) => content.Key === primaryKey);
if (found && found.LastModified) {
return {
@ -8167,14 +8178,16 @@ function getCacheEntryS3(s3Options, s3BucketName, keys, paths) {
Key: obj.Key,
LastModified: obj.LastModified
}));
core.debug(`Total objects ${contents.length}`);
if (response.IsTruncated) {
s3ContinuationToken = response.ContinuationToken;
s3ContinuationToken = response.NextContinuationToken;
}
else {
break;
}
count++;
}
// not found in primary key, So fallback to next keys
core.debug('Not found in primary key, will fallback to restore keys');
const notPrimaryKey = keys.slice(1);
const found = searchRestoreKeyEntry(notPrimaryKey, contents);
if (found != null && found.LastModified) {
@ -8675,6 +8688,10 @@ const deserializerMiddleware = (options, deserializer) => (next, context) => asy
Object.defineProperty(error, "$response", {
value: response,
});
if (!('$metadata' in error)) {
const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;
error.message += "\n " + hint;
}
throw error;
}
};

23
dist/save/index.js vendored
View file

@ -8147,15 +8147,26 @@ function getCacheEntryS3(s3Options, s3BucketName, keys, paths) {
const s3client = new client_s3_1.S3Client(s3Options);
let contents = new Array();
let s3ContinuationToken = null;
let count = 0;
const param = {
Bucket: s3BucketName
};
for (;;) {
core.debug(`ListObjects Count: ${count}`);
if (s3ContinuationToken != null) {
param.ContinuationToken = s3ContinuationToken;
const response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param));
}
let response;
try {
response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param));
}
catch (e) {
throw new Error(`Error from S3: ${e}`);
}
if (!response.Contents) {
throw new Error(`Cannot found object in bucket ${s3BucketName}`);
}
core.debug(`Found objects ${response.Contents.length}`);
const found = response.Contents.find((content) => content.Key === primaryKey);
if (found && found.LastModified) {
return {
@ -8167,14 +8178,16 @@ function getCacheEntryS3(s3Options, s3BucketName, keys, paths) {
Key: obj.Key,
LastModified: obj.LastModified
}));
core.debug(`Total objects ${contents.length}`);
if (response.IsTruncated) {
s3ContinuationToken = response.ContinuationToken;
s3ContinuationToken = response.NextContinuationToken;
}
else {
break;
}
count++;
}
// not found in primary key, So fallback to next keys
core.debug('Not found in primary key, will fallback to restore keys');
const notPrimaryKey = keys.slice(1);
const found = searchRestoreKeyEntry(notPrimaryKey, contents);
if (found != null && found.LastModified) {
@ -8675,6 +8688,10 @@ const deserializerMiddleware = (options, deserializer) => (next, context) => asy
Object.defineProperty(error, "$response", {
value: response,
});
if (!('$metadata' in error)) {
const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;
error.message += "\n " + hint;
}
throw error;
}
};

185
package-lock.json generated
View file

@ -5,8 +5,8 @@
"requires": true,
"dependencies": {
"@actions/cache": {
"version": "https://gitpkg.now.sh/whywaita/toolkit/packages/cache?68d00fc",
"integrity": "sha512-bOOiyJALrLL6Ze6oL+M0sAb0oYjoWdsKDf0Ilqo5TNbWLDybewJF7xeObNUQK2Fu8tDbfEDhBPEb3YSUGY2JUQ==",
"version": "https://gitpkg.now.sh/whywaita/toolkit/packages/cache?5d6dba0",
"integrity": "sha512-DMTeCU4TCSFO/7vSHNbBfry5aFIy3z6jpNOGTdXwGHKhGR6ImmWx6syNpX3//E8XR0hmAcubTiNRS9mNE8X5KA==",
"requires": {
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.1",
@ -681,12 +681,12 @@
}
},
"@aws-sdk/lib-storage": {
"version": "3.297.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.297.0.tgz",
"integrity": "sha512-pdUun+oxwy4+ZFyFswgSvPKdwIkNVyxkx/prJg8nGUMY+ByWImXsfygpyUcz3RtUWH3fKBgx8DhnxVMtqzNnhg==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.306.0.tgz",
"integrity": "sha512-/XPTLZ39gxaQGpcZhYW+o/cKpkELt94Exurs/2YSjNv0BiTueDLoY8pPMkXeuspOKlcPLQneX2HnjbvaQXjUhQ==",
"requires": {
"@aws-sdk/middleware-endpoint": "3.296.0",
"@aws-sdk/smithy-client": "3.296.0",
"@aws-sdk/middleware-endpoint": "3.306.0",
"@aws-sdk/smithy-client": "3.306.0",
"buffer": "5.6.0",
"events": "3.3.0",
"stream-browserify": "3.0.0",
@ -694,27 +694,27 @@
},
"dependencies": {
"@aws-sdk/middleware-stack": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz",
"integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.306.0.tgz",
"integrity": "sha512-G//a6MVSxyFVpOMZ+dzT3+w7XblOd2tRJ5g+/okjn3pNBLbo5o9Hu33K/bz0SQjT/m5mU2F9m0wcdCPYbRPysg==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/smithy-client": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz",
"integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.306.0.tgz",
"integrity": "sha512-AFdNkto0Md6laio9t70WtvocoZqVcAydbY5csimXQh+lhKVmy/C+ZcKarDvaa0JD6PjSHb4snYzcINFpHW5LJQ==",
"requires": {
"@aws-sdk/middleware-stack": "3.296.0",
"@aws-sdk/types": "3.296.0",
"@aws-sdk/middleware-stack": "3.306.0",
"@aws-sdk/types": "3.306.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/types": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz",
"integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.306.0.tgz",
"integrity": "sha512-RnyknWWpQcRmNH7AsNr89sdhOoltCU/4YEwBMw34Eh+/36l7HfA5PdEKbsOkO7MO4+2g5qmmm/AHcnHRvymApg==",
"requires": {
"tslib": "^2.5.0"
}
@ -799,108 +799,50 @@
}
},
"@aws-sdk/middleware-endpoint": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.296.0.tgz",
"integrity": "sha512-t8gc7FHr6KkFD35eSzv3VEYl2vNqzAHbux5Bn0su6TJbaTxXiQKcf2jZDTAh7LzUyrB1LH39mNN+at7r3Qm/3g==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.306.0.tgz",
"integrity": "sha512-i3QRiwgkcsuVN55O7l8I/QGwCypGRZXdYkPjU56LI2w2oiZ82f/nVMNXVc+ZFm2YH7WbCE+5jguw2J7HXdOlyQ==",
"requires": {
"@aws-sdk/middleware-serde": "3.296.0",
"@aws-sdk/protocol-http": "3.296.0",
"@aws-sdk/signature-v4": "3.296.0",
"@aws-sdk/types": "3.296.0",
"@aws-sdk/url-parser": "3.296.0",
"@aws-sdk/util-config-provider": "3.295.0",
"@aws-sdk/util-middleware": "3.296.0",
"@aws-sdk/middleware-serde": "3.306.0",
"@aws-sdk/types": "3.306.0",
"@aws-sdk/url-parser": "3.306.0",
"@aws-sdk/util-middleware": "3.306.0",
"tslib": "^2.5.0"
},
"dependencies": {
"@aws-sdk/is-array-buffer": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz",
"integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/middleware-serde": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz",
"integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.306.0.tgz",
"integrity": "sha512-M3gyPLPduZXMvdgt4XEpVO+3t0ZVPdgeQQwG6JnXv0dgyUizshYs4lrVOAb1KwF6StsmkrAgSN+I273elLiKjA==",
"requires": {
"@aws-sdk/types": "3.296.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/protocol-http": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz",
"integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==",
"requires": {
"@aws-sdk/types": "3.296.0",
"@aws-sdk/types": "3.306.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/querystring-parser": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz",
"integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.306.0.tgz",
"integrity": "sha512-YjOdLcyS/8sNkFPgnxyUx+cM/P2XFGCA2WjQ0e9AXX8xFFkmnY6U5w2EknQ5zyvKy+R/KAV0KAMJBUB+ofjg0A==",
"requires": {
"@aws-sdk/types": "3.296.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/signature-v4": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.296.0.tgz",
"integrity": "sha512-NQyJ/FClty4VmF1WoV4rOkbN0Unn0zevzy8iJrYhqxE3Sc7lySM4Btnsd4Iqelm2dR6l+jNRApGgD8NvoGjGig==",
"requires": {
"@aws-sdk/is-array-buffer": "3.295.0",
"@aws-sdk/types": "3.296.0",
"@aws-sdk/util-hex-encoding": "3.295.0",
"@aws-sdk/util-middleware": "3.296.0",
"@aws-sdk/util-uri-escape": "3.295.0",
"@aws-sdk/util-utf8": "3.295.0",
"@aws-sdk/types": "3.306.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/types": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz",
"integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.306.0.tgz",
"integrity": "sha512-RnyknWWpQcRmNH7AsNr89sdhOoltCU/4YEwBMw34Eh+/36l7HfA5PdEKbsOkO7MO4+2g5qmmm/AHcnHRvymApg==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/url-parser": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz",
"integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==",
"requires": {
"@aws-sdk/querystring-parser": "3.296.0",
"@aws-sdk/types": "3.296.0",
"tslib": "^2.5.0"
}
},
"@aws-sdk/util-config-provider": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz",
"integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/util-hex-encoding": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz",
"integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/util-uri-escape": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz",
"integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.306.0.tgz",
"integrity": "sha512-mhyOjtycZgxKYo2CoDhDQONuRd5TLfEwmyGWVgFrfubF0LejQ3rkBRLC5zT9TBZ8RJHNlqU2oGdsZCy3JV6Rlw==",
"requires": {
"@aws-sdk/querystring-parser": "3.306.0",
"@aws-sdk/types": "3.306.0",
"tslib": "^2.5.0"
}
},
@ -1513,9 +1455,9 @@
}
},
"@aws-sdk/util-middleware": {
"version": "3.296.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz",
"integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==",
"version": "3.306.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.306.0.tgz",
"integrity": "sha512-14CSm1mTrfSNBGbkZu8vSjXYg7DUMfZc74IinOajcFtTswa/6SyiyhU9DK0a837qqwxSfFGpnE2thVeJIF/7FA==",
"requires": {
"tslib": "^2.5.0"
},
@ -1576,39 +1518,6 @@
}
}
},
"@aws-sdk/util-utf8": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz",
"integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==",
"requires": {
"@aws-sdk/util-buffer-from": "3.295.0",
"tslib": "^2.5.0"
},
"dependencies": {
"@aws-sdk/is-array-buffer": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz",
"integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==",
"requires": {
"tslib": "^2.5.0"
}
},
"@aws-sdk/util-buffer-from": {
"version": "3.295.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz",
"integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==",
"requires": {
"@aws-sdk/is-array-buffer": "3.295.0",
"tslib": "^2.5.0"
}
},
"tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
}
}
},
"@aws-sdk/util-utf8-browser": {
"version": "3.49.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.49.0.tgz",
@ -3372,9 +3281,9 @@
"integrity": "sha512-aI3/oo5DzyiI5R/xAhxxRzfZlWlsbbqdgxfTPkqu/Zt+23GXiJvMCyPJT4+xKSXOnLqoL8jJYMLTwvK2M3a5hw=="
},
"@types/node-fetch": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz",
"integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==",
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz",
"integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==",
"requires": {
"@types/node": "*",
"form-data": "^3.0.0"

View file

@ -23,7 +23,7 @@
"author": "GitHub",
"license": "MIT",
"dependencies": {
"@actions/cache": "https://gitpkg.now.sh/whywaita/toolkit/packages/cache?68d00fc",
"@actions/cache": "https://gitpkg.now.sh/whywaita/toolkit/packages/cache?5d6dba0",
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.1",
"@actions/io": "^1.1.0",