1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-07 12:30:06 +00:00

Compare commits

..

4 Commits

Author SHA1 Message Date
Yury Shkoda
35aa4235e4 Merge pull request #148 from sasjs/issue113
feat: service not found error handling
2020-11-16 09:54:03 +03:00
Mihajlo Medjedovic
e9be1cf99a fix: service not found error handling 2020-11-12 16:03:32 +01:00
Mihajlo Medjedovic
c7b0821081 style: lint 2020-11-09 18:24:10 +01:00
Mihajlo Medjedovic
4a4618dd32 feat: service not found error handling for SAS9 2020-11-09 18:19:39 +01:00
3 changed files with 60 additions and 21 deletions

View File

@@ -607,7 +607,7 @@ export class SASViyaApiClient {
}) })
return Promise.reject( return Promise.reject(
new ErrorResponse('Job execution failed', { new ErrorResponse('Job execution failed.', {
status: 500, status: 500,
body: log body: log
}) })
@@ -1114,7 +1114,7 @@ export class SASViyaApiClient {
} }
if (!jobToExecute) { if (!jobToExecute) {
throw new Error(`The job ${sasJob} was not found.`) throw new Error(`Job was not found.`)
} }
const jobDefinitionLink = jobToExecute?.links.find( const jobDefinitionLink = jobToExecute?.links.find(
(l) => l.rel === 'getResource' (l) => l.rel === 'getResource'

View File

@@ -780,11 +780,23 @@ export default class SASjs {
} else { } else {
this.retryCountComputeApi = 0 this.retryCountComputeApi = 0
reject( 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 (error && error.status === 401) {
if (loginRequiredCallback) loginRequiredCallback(true) if (loginRequiredCallback) loginRequiredCallback(true)
sasjsWaitingRequest.requestPromise.resolve = resolve sasjsWaitingRequest.requestPromise.resolve = resolve
@@ -792,10 +804,8 @@ export default class SASjs {
sasjsWaitingRequest.config = config sasjsWaitingRequest.config = config
this.sasjsWaitingRequests.push(sasjsWaitingRequest) this.sasjsWaitingRequests.push(sasjsWaitingRequest)
} else { } 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 { } else {
this.retryCountJeseApi = 0 this.retryCountJeseApi = 0
reject( 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 { } else {
reject( reject(
new ErrorResponse( new ErrorResponse(
'Job WEB execution failed', 'Job WEB execution failed.',
this.parseSAS9ErrorResponse(responseText) this.parseSAS9ErrorResponse(responseText)
) )
) )
@@ -1082,7 +1104,7 @@ export default class SASjs {
} catch (e) { } catch (e) {
reject( reject(
new ErrorResponse( new ErrorResponse(
'Job WEB debug response parsing failed', 'Job WEB debug response parsing failed.',
{ response: resText, exception: e } { response: resText, exception: e }
) )
) )
@@ -1091,7 +1113,7 @@ export default class SASjs {
(err: any) => { (err: any) => {
reject( reject(
new ErrorResponse( new ErrorResponse(
'Job WEB debug response parsing failed', 'Job WEB debug response parsing failed.',
err err
) )
) )
@@ -1100,19 +1122,34 @@ export default class SASjs {
} catch (e) { } catch (e) {
reject( reject(
new ErrorResponse( new ErrorResponse(
'Job WEB debug response parsing failed', 'Job WEB debug response parsing failed.',
{ response: responseText, exception: e } { response: responseText, exception: e }
) )
) )
} }
} else { } else {
this.updateUsername(responseText) this.updateUsername(responseText)
if (
responseText.includes(
'The requested URL /SASStoredProcess/do/ was not found on this server.'
) ||
responseText.includes('Stored process not found')
) {
reject(
new ErrorResponse(
'Service not found on the server.',
{ service: sasJob },
responseText
)
)
}
try { try {
const parsedJson = JSON.parse(responseText) const parsedJson = JSON.parse(responseText)
resolve(parsedJson) resolve(parsedJson)
} catch (e) { } catch (e) {
reject( reject(
new ErrorResponse('Job WEB response parsing failed', { new ErrorResponse('Job WEB response parsing failed.', {
response: responseText, response: responseText,
exception: e exception: e
}) })
@@ -1123,7 +1160,7 @@ export default class SASjs {
} }
}) })
.catch((e: Error) => { .catch((e: Error) => {
reject(new ErrorResponse('Job WEB request failed', e)) reject(new ErrorResponse('Job WEB request failed.', e))
}) })
} }
) )

View File

@@ -1,14 +1,16 @@
export class ErrorResponse { export class ErrorResponse {
error: ErrorBody error: ErrorBody
constructor(message: string, details?: any) { constructor(message: string, details?: any, raw?: any) {
let detailsString = '' let detailsString = details
let raw
try { if (typeof details !== 'object') {
detailsString = JSON.stringify(details) try {
} catch { detailsString = JSON.parse(details)
raw = details } catch {
raw = details
detailsString = ''
}
} }
this.error = { this.error = {