mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-18 01:20:05 +00:00
fix(session): remove retry limit if could not get state
This commit is contained in:
@@ -5,8 +5,7 @@ import { prefixMessage } from '@sasjs/utils/error'
|
|||||||
import { RequestClient } from './request/RequestClient'
|
import { RequestClient } from './request/RequestClient'
|
||||||
|
|
||||||
const MAX_SESSION_COUNT = 1
|
const MAX_SESSION_COUNT = 1
|
||||||
const RETRY_LIMIT: number = 3
|
const loggedErrors: NoSessionStateError[] = []
|
||||||
let RETRY_COUNT: number = 0
|
|
||||||
|
|
||||||
export class SessionManager {
|
export class SessionManager {
|
||||||
constructor(
|
constructor(
|
||||||
@@ -161,7 +160,7 @@ export class SessionManager {
|
|||||||
|
|
||||||
const stateLink = session.links.find((l: any) => l.rel === 'state')
|
const stateLink = session.links.find((l: any) => l.rel === 'state')
|
||||||
|
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve) => {
|
||||||
if (
|
if (
|
||||||
sessionState === 'pending' ||
|
sessionState === 'pending' ||
|
||||||
sessionState === 'running' ||
|
sessionState === 'running' ||
|
||||||
@@ -192,23 +191,25 @@ export class SessionManager {
|
|||||||
this.printedSessionState.printed = false
|
this.printedSessionState.printed = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is an internal error present in SAS Viya 3.5
|
|
||||||
// Retry to wait for a session status in such case of SAS internal error
|
|
||||||
if (!sessionState) {
|
if (!sessionState) {
|
||||||
if (RETRY_COUNT < RETRY_LIMIT) {
|
const stateError = new NoSessionStateError(
|
||||||
RETRY_COUNT++
|
responseStatus,
|
||||||
|
this.serverUrl + stateLink.href,
|
||||||
|
session.links.find((l: any) => l.rel === 'log')?.href as string
|
||||||
|
)
|
||||||
|
|
||||||
resolve(this.waitForSession(session, etag, accessToken))
|
if (
|
||||||
} else {
|
!loggedErrors.find(
|
||||||
reject(
|
(err: NoSessionStateError) =>
|
||||||
new NoSessionStateError(
|
err.serverResponseStatus === stateError.serverResponseStatus
|
||||||
responseStatus,
|
|
||||||
this.serverUrl + stateLink.href,
|
|
||||||
session.links.find((l: any) => l.rel === 'log')
|
|
||||||
?.href as string
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
) {
|
||||||
|
loggedErrors.push(stateError)
|
||||||
|
|
||||||
|
logger.error(stateError.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolve(this.waitForSession(session, etag, accessToken))
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(sessionState)
|
resolve(sessionState)
|
||||||
|
|||||||
Reference in New Issue
Block a user