From e9be1cf99accb9f44b6f9536e8c1836905ddbb7c Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Thu, 12 Nov 2020 16:03:32 +0100 Subject: [PATCH] fix: service not found error handling --- src/SASViyaApiClient.ts | 4 ++-- src/SASjs.ts | 48 ++++++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index 1289b53..6453698 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -607,7 +607,7 @@ export class SASViyaApiClient { }) return Promise.reject( - new ErrorResponse('Job execution failed', { + new ErrorResponse('Job execution failed.', { status: 500, body: log }) @@ -1114,7 +1114,7 @@ export class SASViyaApiClient { } if (!jobToExecute) { - throw new Error(`The job ${sasJob} was not found.`) + throw new Error(`Job was not found.`) } const jobDefinitionLink = jobToExecute?.links.find( (l) => l.rel === 'getResource' diff --git a/src/SASjs.ts b/src/SASjs.ts index 53c1202..edb0232 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -780,11 +780,23 @@ export default class SASjs { } else { this.retryCountComputeApi = 0 reject( - new ErrorResponse('Compute API retry requests limit reached') + new ErrorResponse('Compute API retry requests limit reached.') ) } } + if (response?.log) { + this.appendSasjsRequest(response.log, sasJob, null) + } + + if (error.toString().includes('Job was not found')) { + reject( + new ErrorResponse('Service not found on the server.', { + sasJob: sasJob + }) + ) + } + if (error && error.status === 401) { if (loginRequiredCallback) loginRequiredCallback(true) sasjsWaitingRequest.requestPromise.resolve = resolve @@ -792,10 +804,8 @@ export default class SASjs { sasjsWaitingRequest.config = config this.sasjsWaitingRequests.push(sasjsWaitingRequest) } else { - reject(new ErrorResponse('Job execution failed', error)) + reject(new ErrorResponse('Job execution failed.', error)) } - - this.appendSasjsRequest(response.log, sasJob, null) }) } ) @@ -875,12 +885,24 @@ export default class SASjs { } else { this.retryCountJeseApi = 0 reject( - new ErrorResponse('Jes API retry requests limit reached') + new ErrorResponse('Jes API retry requests limit reached.') ) } } - reject(new ErrorResponse('Job execution failed', e)) + if (e?.log) { + this.appendSasjsRequest(e.log, sasJob, null) + } + + if (e.toString().includes('Job was not found')) { + reject( + new ErrorResponse('Service not found on the server.', { + sasJob: sasJob + }) + ) + } + + reject(new ErrorResponse('Job execution failed.', e)) }) ) } @@ -1064,7 +1086,7 @@ export default class SASjs { } else { reject( new ErrorResponse( - 'Job WEB execution failed', + 'Job WEB execution failed.', this.parseSAS9ErrorResponse(responseText) ) ) @@ -1082,7 +1104,7 @@ export default class SASjs { } catch (e) { reject( new ErrorResponse( - 'Job WEB debug response parsing failed', + 'Job WEB debug response parsing failed.', { response: resText, exception: e } ) ) @@ -1091,7 +1113,7 @@ export default class SASjs { (err: any) => { reject( new ErrorResponse( - 'Job WEB debug response parsing failed', + 'Job WEB debug response parsing failed.', err ) ) @@ -1100,7 +1122,7 @@ export default class SASjs { } catch (e) { reject( new ErrorResponse( - 'Job WEB debug response parsing failed', + 'Job WEB debug response parsing failed.', { response: responseText, exception: e } ) ) @@ -1115,7 +1137,7 @@ export default class SASjs { ) { reject( new ErrorResponse( - 'Service not found on the server', + 'Service not found on the server.', { service: sasJob }, responseText ) @@ -1127,7 +1149,7 @@ export default class SASjs { resolve(parsedJson) } catch (e) { reject( - new ErrorResponse('Job WEB response parsing failed', { + new ErrorResponse('Job WEB response parsing failed.', { response: responseText, exception: e }) @@ -1138,7 +1160,7 @@ export default class SASjs { } }) .catch((e: Error) => { - reject(new ErrorResponse('Job WEB request failed', e)) + reject(new ErrorResponse('Job WEB request failed.', e)) }) } )