From b8fc0a5a7860c158b37e8efdc8100e4ded544580 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 4 Oct 2023 15:18:46 -0300 Subject: [PATCH 1/4] fix(bulk v2): catch job errors while polling --- src/BulkBaseCommand.ts | 8 ++++++++ src/commands/data/delete/bulk.ts | 9 ++++++++- src/queryUtils.ts | 1 - 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/BulkBaseCommand.ts b/src/BulkBaseCommand.ts index d07bdc89..1dd0c13c 100644 --- a/src/BulkBaseCommand.ts +++ b/src/BulkBaseCommand.ts @@ -77,6 +77,14 @@ export abstract class BulkBaseCommand extends SfCommand { )}${this.getRemainingRecordsStatus()}`; }); + this.job.on('failed', (err: Error) => { + try { + this.error(err); + } finally { + this.spinner.stop(); + } + }); + this.job.on('error', (message: string) => { try { this.error(message); diff --git a/src/commands/data/delete/bulk.ts b/src/commands/data/delete/bulk.ts index 2d090c8d..1ffbd3f8 100644 --- a/src/commands/data/delete/bulk.ts +++ b/src/commands/data/delete/bulk.ts @@ -25,7 +25,14 @@ export default class Delete extends BulkOperationCommand { await validateSobjectType(flags.sobject, conn); - return this.runBulkOperation(flags.sobject, flags.file, conn, flags.async ? 0 : flags.wait?.minutes, flags.verbose, 'delete'); + return this.runBulkOperation( + flags.sobject, + flags.file, + conn, + flags.async ? 0 : flags.wait?.minutes, + flags.verbose, + 'delete' + ); } // eslint-disable-next-line class-methods-use-this diff --git a/src/queryUtils.ts b/src/queryUtils.ts index b6b246b2..97b48adb 100644 --- a/src/queryUtils.ts +++ b/src/queryUtils.ts @@ -47,4 +47,3 @@ export const transformBulkResults = (results: Record[], query: string): SoqlQuer query, }; }; - From 62361049d861200d32f1c5ed852efc261706688c Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Fri, 20 Oct 2023 13:21:59 -0300 Subject: [PATCH 2/4] fix: check new err msg from jsforce --- src/commands/data/query.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/data/query.ts b/src/commands/data/query.ts index 8577e711..0b64efa2 100644 --- a/src/commands/data/query.ts +++ b/src/commands/data/query.ts @@ -150,7 +150,7 @@ export class DataSoqlQueryCommand extends SfCommand { return transformBulkResults(res, query); } catch (e) { const err = e as Error & { jobId: string }; - if (timeout.minutes === 0 && err.message.includes('Polling time out')) { + if (timeout.minutes === 0 && err.message.includes('Polling timed out')) { // async query, so we can't throw an error, suggest data:query:resume --queryid const cache = await BulkQueryRequestCache.create(); await cache.createCacheEntryForRequest(err.jobId, connection.getUsername(), connection.getApiVersion()); From ada1ceb795175941c4c669f89ad2b5dace6cc3cd Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Fri, 20 Oct 2023 17:03:43 -0300 Subject: [PATCH 3/4] fix: check error name --- src/batcher.ts | 2 +- src/commands/data/query.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/batcher.ts b/src/batcher.ts index d1fe3df1..4f337394 100644 --- a/src/batcher.ts +++ b/src/batcher.ts @@ -141,7 +141,7 @@ export class Batcher { err.message = messages.getMessage('ExternalIdRequired', [sobjectType]); job.emit('error', err); } - if (err.message.startsWith('Polling time out')) { + if (err.name === 'PollingTimeout') { err.message = this.parseTimeOutError(err); // using the reject method for all of the promises wasn't handling errors properly // so emit a 'error' on the job. diff --git a/src/commands/data/query.ts b/src/commands/data/query.ts index 0b64efa2..4e1d0836 100644 --- a/src/commands/data/query.ts +++ b/src/commands/data/query.ts @@ -150,7 +150,7 @@ export class DataSoqlQueryCommand extends SfCommand { return transformBulkResults(res, query); } catch (e) { const err = e as Error & { jobId: string }; - if (timeout.minutes === 0 && err.message.includes('Polling timed out')) { + if (timeout.minutes === 0 && err.name === 'JobPollingTimeout') { // async query, so we can't throw an error, suggest data:query:resume --queryid const cache = await BulkQueryRequestCache.create(); await cache.createCacheEntryForRequest(err.jobId, connection.getUsername(), connection.getApiVersion()); From 1428f07b81a1705fa8fffef28ca5e6aa06a66485 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Fri, 20 Oct 2023 19:18:41 -0300 Subject: [PATCH 4/4] fix: bump salesforce/core --- package.json | 2 +- yarn.lock | 101 +++++++++------------------------------------------ 2 files changed, 18 insertions(+), 85 deletions(-) diff --git a/package.json b/package.json index 274dc91b..331463e4 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ }, "dependencies": { "@oclif/core": "^2.15.0", - "@salesforce/core": "^5.3.9", + "@salesforce/core": "^5.3.10", "@salesforce/kit": "^3.0.9", "@salesforce/sf-plugins-core": "^3.1.23", "@salesforce/ts-types": "^2.0.8", diff --git a/yarn.lock b/yarn.lock index 52c9741a..b471ceb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,15 +15,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" - integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== - dependencies: - "@babel/highlight" "^7.22.10" - chalk "^2.4.2" - -"@babel/code-frame@^7.22.13": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== @@ -57,17 +49,7 @@ json5 "^2.2.2" semver "^6.3.1" -"@babel/generator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== - dependencies: - "@babel/types" "^7.22.10" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.23.0": +"@babel/generator@^7.22.10", "@babel/generator@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== @@ -88,16 +70,11 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.22.20": +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== - "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -150,16 +127,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.22.20": +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" @@ -174,15 +146,6 @@ "@babel/traverse" "^7.22.10" "@babel/types" "^7.22.10" -"@babel/highlight@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" - integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - "@babel/highlight@^7.22.13": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" @@ -192,12 +155,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.22.10", "@babel/parser@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" - integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== - -"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": +"@babel/parser@^7.22.10", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== @@ -217,7 +175,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15": +"@babel/template@^7.22.15", "@babel/template@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -226,15 +184,6 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" - "@babel/traverse@^7.22.10": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" @@ -251,16 +200,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.22.10", "@babel/types@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" - integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.15", "@babel/types@^7.23.0": +"@babel/types@^7.22.10", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== @@ -1011,10 +951,10 @@ strip-ansi "6.0.1" ts-retry-promise "^0.7.1" -"@salesforce/core@^5.2.10", "@salesforce/core@^5.3.1", "@salesforce/core@^5.3.5", "@salesforce/core@^5.3.9": - version "5.3.9" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-5.3.9.tgz#1c8f793ce1a0798c5c7767a5a370a5926d3298de" - integrity sha512-/HX0PiXq3Sjc5eVJ0EaYetcDGsKU9O9Nj8jFGw5qYlITx8zogfxc0j07liH67tQXS1KbTysYoj/MQ2zbHSNkPA== +"@salesforce/core@^5.2.10", "@salesforce/core@^5.3.1", "@salesforce/core@^5.3.10", "@salesforce/core@^5.3.5", "@salesforce/core@^5.3.9": + version "5.3.10" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-5.3.10.tgz#897d315dcfbe025ff7d69f6c127577611154a6ee" + integrity sha512-PVBLRt28CBbDHbElChDsFIy+hMfc66pg/Vz0EzWiwL0XImN8Cw6n+viPV8uX7FGQVeA2P2RHGdRb83NCDt58dA== dependencies: "@salesforce/kit" "^3.0.13" "@salesforce/schemas" "^1.6.0" @@ -1025,7 +965,7 @@ faye "^1.4.0" form-data "^4.0.0" js2xmlparser "^4.0.1" - jsforce "^2.0.0-beta.27" + jsforce "^2.0.0-beta.28" jsonwebtoken "9.0.2" jszip "3.10.1" pino "^8.15.6" @@ -4562,10 +4502,10 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsforce@^2.0.0-beta.27: - version "2.0.0-beta.27" - resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.27.tgz#ba822b18b77bea4529491060a9b07bc1009735ac" - integrity sha512-d9dDWWeHwayRKPo8FJBAIUyk8sNXGSHwdUjR6al3yK0YKci27Jc1XfNaQTxEAuymHQJVaCb1gxTKqmA4uznFdQ== +jsforce@^2.0.0-beta.27, jsforce@^2.0.0-beta.28: + version "2.0.0-beta.28" + resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.28.tgz#5fd8d9b8e5efc798698793b147e00371f3d74e8f" + integrity sha512-tTmKRhr4yWNinhmurY/tiiltLFQq9RQ+gpYAt3wjFdCGjzd49/wqYQIFw4SsI3+iLjxXnc0uTgGwdAkDjxDWnA== dependencies: "@babel/runtime" "^7.12.5" "@babel/runtime-corejs3" "^7.12.5" @@ -6897,14 +6837,7 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -sonic-boom@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" - integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== - dependencies: - atomic-sleep "^1.0.0" - -sonic-boom@^3.7.0: +sonic-boom@^3.0.0, sonic-boom@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.7.0.tgz#b4b7b8049a912986f4a92c51d4660b721b11f2f2" integrity sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==