1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-11 09:24:35 +00:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Allan Bowe
8c30cbff13 Merge pull request #359 from sasjs/retry-state-error
fix(job-state-poll): Continue poll regardless of errors
2021-05-11 12:26:16 +03:00
Krishna Acondy
8f3a7f33f8 chore(*): reduce max error count 2021-05-11 10:23:47 +01:00
Krishna Acondy
67ec27bab7 chore(*): increment error count 2021-05-11 10:20:28 +01:00
Krishna Acondy
c1b200b0d8 fix(job-state-poll): error out after max consecutive errors 2021-05-11 10:12:11 +01:00
Krishna Acondy
e03ec996d6 chore(*): fix formatting 2021-05-11 09:25:17 +01:00
Krishna Acondy
ad8dbfd4ec chore(*): add URL to logs 2021-05-11 08:57:35 +01:00
Krishna Acondy
15a774ff81 chore(*): print URL when polling job state 2021-05-11 08:29:15 +01:00
Krishna Acondy
98114c5591 fix(job-state-poll): Continue polling for job state despite errored requests 2021-05-11 08:23:40 +01:00

View File

@@ -1078,6 +1078,7 @@ export class SASViyaApiClient {
) {
let POLL_INTERVAL = 300
let MAX_POLL_COUNT = 1000
let MAX_ERROR_COUNT = 5
if (pollOptions) {
POLL_INTERVAL = pollOptions.POLL_INTERVAL || POLL_INTERVAL
@@ -1086,6 +1087,7 @@ export class SASViyaApiClient {
let postedJobState = ''
let pollCount = 0
let errorCount = 0
const headers: any = {
'Content-Type': 'application/json',
'If-None-Match': etag
@@ -1107,7 +1109,11 @@ export class SASViyaApiClient {
this.debug
)
.catch((err) => {
throw prefixMessage(err, 'Error while getting job state. ')
console.error(
`Error fetching job state from ${this.serverUrl}${stateLink.href}. Starting poll, assuming job to be running.`,
err
)
return { result: 'unavailable' }
})
const currentState = state.trim()
@@ -1122,7 +1128,8 @@ export class SASViyaApiClient {
if (
postedJobState === 'running' ||
postedJobState === '' ||
postedJobState === 'pending'
postedJobState === 'pending' ||
postedJobState === 'unavailable'
) {
if (stateLink) {
const { result: jobState } = await this.requestClient
@@ -1134,13 +1141,27 @@ export class SASViyaApiClient {
this.debug
)
.catch((err) => {
throw prefixMessage(
err,
'Error while getting job state after interval. '
errorCount++
if (
pollCount >= MAX_POLL_COUNT ||
errorCount >= MAX_ERROR_COUNT
) {
throw prefixMessage(
err,
'Error while getting job state after interval. '
)
}
console.error(
`Error fetching job state from ${this.serverUrl}${stateLink.href}. Resuming poll, assuming job to be running.`,
err
)
return { result: 'unavailable' }
})
postedJobState = jobState.trim()
if (postedJobState != 'unavailable' && errorCount > 0) {
errorCount = 0
}
if (this.debug && printedState !== postedJobState) {
console.log('Polling job status...')