From dd76da937766c904a488c9ca027bc413e1453621 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Wed, 8 Nov 2023 17:43:05 +0100 Subject: [PATCH] Increase timeout in health check endpoint --- .../data-provider/data-enhancer/data-enhancer.service.ts | 2 ++ .../data-enhancer/openfigi/openfigi.service.ts | 4 +++- .../data-enhancer/trackinsight/trackinsight.service.ts | 4 +++- .../data-enhancer/yahoo-finance/yahoo-finance.service.ts | 8 +++++++- .../data-provider/interfaces/data-enhancer.interface.ts | 2 ++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts index e5038c7c6..d9b509f42 100644 --- a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts @@ -2,6 +2,7 @@ import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/in import { HttpException, Inject, Injectable } from '@nestjs/common'; import { Prisma } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; +import ms from 'ms'; @Injectable() export class DataEnhancerService { @@ -24,6 +25,7 @@ export class DataEnhancerService { try { const assetProfile = await dataEnhancer.enhance({ + requestTimeout: ms('30 seconds'), response: { assetClass: 'EQUITY', assetSubClass: 'ETF' diff --git a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts index 363cbb167..dda30ba1a 100644 --- a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts @@ -15,9 +15,11 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface { ) {} public async enhance({ + requestTimeout = DEFAULT_REQUEST_TIMEOUT, response, symbol }: { + requestTimeout?: number; response: Partial; symbol: string; }): Promise> { @@ -45,7 +47,7 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, requestTimeout); const mappings = await got .post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, { diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index 36eb22dad..4de08fcef 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -21,9 +21,11 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { }; public async enhance({ + requestTimeout = DEFAULT_REQUEST_TIMEOUT, response, symbol }: { + requestTimeout?: number; response: Partial; symbol: string; }): Promise> { @@ -37,7 +39,7 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, requestTimeout); const profile = await got( `${TrackinsightDataEnhancerService.baseUrl}/funds/${symbol}.json`, diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index d46af66a7..67fc0a9c1 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -1,6 +1,10 @@ import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; -import { DEFAULT_CURRENCY, UNKNOWN_KEY } from '@ghostfolio/common/config'; +import { + DEFAULT_CURRENCY, + DEFAULT_REQUEST_TIMEOUT, + UNKNOWN_KEY +} from '@ghostfolio/common/config'; import { isCurrency } from '@ghostfolio/common/helper'; import { Injectable, Logger } from '@nestjs/common'; import { @@ -72,9 +76,11 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { } public async enhance({ + requestTimeout = DEFAULT_REQUEST_TIMEOUT, response, symbol }: { + requestTimeout?: number; response: Partial; symbol: string; }): Promise> { diff --git a/apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts b/apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts index 9c6db9196..73e0cc69d 100644 --- a/apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts +++ b/apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts @@ -2,9 +2,11 @@ import { SymbolProfile } from '@prisma/client'; export interface DataEnhancerInterface { enhance({ + requestTimeout, response, symbol }: { + requestTimeout?: number; response: Partial; symbol: string; }): Promise>;