1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-15 16:10:06 +00:00

fix(session): fixed polling session state

This commit is contained in:
Yury Shkoda
2021-06-30 16:55:09 +03:00
parent a164fb7df9
commit ac6cd7be82
2 changed files with 12 additions and 15 deletions

View File

@@ -6,10 +6,6 @@ import { RequestClient } from './request/RequestClient'
const MAX_SESSION_COUNT = 1 const MAX_SESSION_COUNT = 1
const RETRY_LIMIT: number = 3 const RETRY_LIMIT: number = 3
let RETRY_COUNT: number = 0 let RETRY_COUNT: number = 0
const INTERNAL_SAS_ERROR = {
status: 304,
message: 'Not Modified'
}
export class SessionManager { export class SessionManager {
constructor( constructor(
@@ -164,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, _) => { return new Promise(async (resolve, reject) => {
if ( if (
sessionState === 'pending' || sessionState === 'pending' ||
sessionState === 'running' || sessionState === 'running' ||
@@ -182,7 +178,7 @@ export class SessionManager {
etag!, etag!,
accessToken accessToken
).catch((err) => { ).catch((err) => {
throw err throw prefixMessage(err, 'Error while getting session state.')
}) })
sessionState = state.trim() sessionState = state.trim()
@@ -196,13 +192,14 @@ export class SessionManager {
// There is an internal error present in SAS Viya 3.5 // 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 // Retry to wait for a session status in such case of SAS internal error
if ( if (!sessionState) {
sessionState === INTERNAL_SAS_ERROR.message && if (RETRY_COUNT < RETRY_LIMIT) {
RETRY_COUNT < RETRY_LIMIT RETRY_COUNT++
) {
RETRY_COUNT++
resolve(this.waitForSession(session, etag, accessToken)) resolve(this.waitForSession(session, etag, accessToken))
} else {
reject('Could not get session state.')
}
} }
resolve(sessionState) resolve(sessionState)
@@ -222,9 +219,6 @@ export class SessionManager {
.get(url, accessToken, 'text/plain', { 'If-None-Match': etag }) .get(url, accessToken, 'text/plain', { 'If-None-Match': etag })
.then((res) => res.result as string) .then((res) => res.result as string)
.catch((err) => { .catch((err) => {
if (err.status === INTERNAL_SAS_ERROR.status)
return INTERNAL_SAS_ERROR.message
throw err throw err
}) })
} }

View File

@@ -63,6 +63,9 @@ export class RequestClient implements HttpClient {
baseURL: baseUrl baseURL: baseUrl
}) })
} }
this.httpClient.defaults.validateStatus = (status) =>
status >= 200 && status < 305
} }
public getCsrfToken(type: 'general' | 'file' = 'general') { public getCsrfToken(type: 'general' | 'file' = 'general') {