From 266be1f7eda98297c166e13050d38b641d01b834 Mon Sep 17 00:00:00 2001 From: Anatoly Popov Date: Sat, 7 Jun 2025 23:48:30 +0300 Subject: [PATCH 1/2] fix: don't fail whole request if one of providers fails, but log it Signed-off-by: Anatoly Popov --- .../data-providers/ghostfolio/ghostfolio.service.ts | 9 +++++++-- .../src/services/data-provider/data-provider.service.ts | 9 +++++++-- .../data-provider/yahoo-finance/yahoo-finance.service.ts | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts index bdaecf718..97ca86a42 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts @@ -294,9 +294,14 @@ export class GhostfolioService { ); } - const searchResults = await Promise.all(promises); + const searchResults = await Promise.allSettled(promises); - for (const { items } of searchResults) { + for (const result of searchResults) { + if (result.status === 'rejected') { + Logger.warn(result.reason, 'GhostfolioService'); + continue; + } + const { items } = result.value; if (items?.length > 0) { lookupItems = lookupItems.concat(items); } diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 348935101..92a726be8 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -652,9 +652,14 @@ export class DataProviderService { ); } - const searchResults = await Promise.all(promises); + const searchResults = await Promise.allSettled(promises); - for (const { items } of searchResults) { + for (const result of searchResults) { + if (result.status === 'rejected') { + Logger.warn(result.reason, 'DataProviderService'); + continue; + } + const { items } = result.value; if (items?.length > 0) { lookupItems = lookupItems.concat(items); } diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 06e4674fb..d4bc6f252 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -331,6 +331,7 @@ export class YahooFinanceService implements DataProviderInterface { } } catch (error) { Logger.error(error, 'YahooFinanceService'); + return { items: [] }; } return { items }; From c4fb8af45d8f7d0c786d74392581a3e8bba8b5f4 Mon Sep 17 00:00:00 2001 From: Anatoly Popov Date: Sat, 7 Jun 2025 23:48:30 +0300 Subject: [PATCH 2/2] fix: if yahoo service returns zero quotes do not fail enhance request Signed-off-by: Anatoly Popov --- .../data-enhancer/yahoo-finance/yahoo-finance.service.ts | 3 +++ 1 file changed, 3 insertions(+) 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 94a466742..4e837fbe5 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 @@ -102,6 +102,9 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { yahooSymbol = symbol; } else { const { quotes } = await this.yahooFinance.search(response.isin); + if (quotes.length === 0) { + return response; + } yahooSymbol = quotes[0].symbol as string; }