diff --git a/dist/restore/index.js b/dist/restore/index.js index 8ae22e4..f51b66c 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -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 (;;) { - param.ContinuationToken = s3ContinuationToken; - const response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param)); + core.debug(`ListObjects Count: ${count}`); + if (s3ContinuationToken != null) { + param.ContinuationToken = s3ContinuationToken; + } + 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; } }; diff --git a/dist/save/index.js b/dist/save/index.js index f42a989..9967e07 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -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 (;;) { - param.ContinuationToken = s3ContinuationToken; - const response = yield s3client.send(new client_s3_1.ListObjectsV2Command(param)); + core.debug(`ListObjects Count: ${count}`); + if (s3ContinuationToken != null) { + param.ContinuationToken = s3ContinuationToken; + } + 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; } }; diff --git a/package-lock.json b/package-lock.json index 1bc9949..42180e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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" diff --git a/package.json b/package.json index 61c019a..f7385e7 100644 --- a/package.json +++ b/package.json @@ -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",