Browse Source

fix: add retry mechanism on failure

pull/9873/head
Pranav C 2 days ago
parent
commit
cbf80b0d32
  1. 68
      packages/nc-gui/composables/useApi/interceptors.ts

68
packages/nc-gui/composables/useApi/interceptors.ts

@ -1,6 +1,8 @@
import type { Api } from 'nocodb-sdk'
const DbNotFoundMsg = 'Database config not found'
const TIMEOUT_RETRY_COUNT = 1
export function addAxiosInterceptors(api: Api<any>) {
const state = useGlobal()
const router = useRouter()
@ -61,40 +63,44 @@ export function addAxiosInterceptors(api: Api<any>) {
return Promise.reject(error)
}
try {
const token = await state.refreshToken({
axiosInstance,
skipLogout: true,
})
if (!token) {
await state.signOut({
redirectToSignin: !isSharedPage,
skipApiCall: true,
let retry = 0
do {
try {
const token = await state.refreshToken({
axiosInstance,
skipLogout: true,
})
return Promise.reject(error)
}
const config = error.config
config.headers['xc-auth'] = token
const response = await axiosInstance.request(config)
return response
} catch (refreshTokenError) {
if ((refreshTokenError as any)?.code === 'ERR_CANCELED') {
return Promise.reject(refreshTokenError)
if (!token) {
await state.signOut({
redirectToSignin: !isSharedPage,
skipApiCall: true,
})
return Promise.reject(error)
}
const config = error.config
config.headers['xc-auth'] = token
const response = await axiosInstance.request(config)
return response
} catch (refreshTokenError) {
if ((refreshTokenError as any)?.code === 'ERR_CANCELED') {
return Promise.reject(refreshTokenError)
}
// if shared execution error, don't sign out
if (!(refreshTokenError instanceof SharedExecutionError)) {
await state.signOut({
redirectToSignin: !isSharedPage,
skipApiCall: true,
})
return Promise.reject(error)
}
if (retry >= TIMEOUT_RETRY_COUNT) return Promise.reject(error)
}
// if shared execution error, don't sign out
if (!(refreshTokenError instanceof SharedExecutionError)) {
await state.signOut({
redirectToSignin: !isSharedPage,
skipApiCall: true,
})
}
return Promise.reject(error)
}
} while (retry++ < TIMEOUT_RETRY_COUNT)
},
)

Loading…
Cancel
Save