From bf0094b4c1ddd1982d296c41411fc3238c56c1b1 Mon Sep 17 00:00:00 2001 From: Anton Standrik Date: Fri, 6 Sep 2024 15:41:34 +0300 Subject: [PATCH] fix: better retry timeout for traces --- src/services/api.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/services/api.ts b/src/services/api.ts index 7483a6b21b..fb5e5e7603 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -55,15 +55,16 @@ import { SECOND_IN_MS, } from '../utils/constants'; import {prepareSortValue} from '../utils/filters'; +import {isAxiosError} from '../utils/response'; import type {Nullable} from '../utils/typecheckers'; import {parseMetaCluster} from './parsers/parseMetaCluster'; import {parseMetaTenants} from './parsers/parseMetaTenants'; import {settingsManager} from './settings'; -// Overall timeout 53~71 s depending on server response time const TRACE_CHECK_TIMEOUT = 2 * SECOND_IN_MS; -const MAX_TRACE_CHECK_RETRIES = 9; +const TRACE_API_ERROR_TIMEOUT = 10 * SECOND_IN_MS; +const MAX_TRACE_CHECK_RETRIES = 30; type AxiosOptions = { concurrentId?: string; @@ -570,7 +571,17 @@ export class YdbEmbeddedAPI extends AxiosWrapper { timeout: TRACE_CHECK_TIMEOUT, 'axios-retry': { retries: MAX_TRACE_CHECK_RETRIES, - retryDelay: axiosRetry.exponentialDelay, + retryDelay: (_: number, error: unknown) => { + const isTracingError = + isAxiosError(error) && + (error?.response?.status === 404 || error.code === 'ERR_NETWORK'); + + if (isTracingError) { + return TRACE_CHECK_TIMEOUT; + } + + return TRACE_API_ERROR_TIMEOUT; + }, shouldResetTimeout: true, retryCondition: () => true, },