diff --git a/.changeset/great-points-design.md b/.changeset/great-points-design.md new file mode 100644 index 0000000000..7ce22b1bac --- /dev/null +++ b/.changeset/great-points-design.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +--- + +Catch errors from a fact retriever and log them. diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts index 11fd0d29b8..4e9d4c41b2 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts @@ -16,6 +16,7 @@ import { FactRetriever, FactRetrieverContext, + TechInsightFact, TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistry } from './FactRetrieverRegistry'; @@ -108,16 +109,23 @@ export class FactRetrieverEngine { this.logger.info( `Retrieving facts for fact retriever ${factRetriever.id}`, ); - const facts = await factRetriever.handler({ - ...this.factRetrieverContext, - entityFilter: factRetriever.entityFilter, - }); - if (this.logger.isDebugEnabled()) { + + let facts: TechInsightFact[] = []; + try { + facts = await factRetriever.handler({ + ...this.factRetrieverContext, + entityFilter: factRetriever.entityFilter, + }); this.logger.debug( `Retrieved ${facts.length} facts for fact retriever ${ factRetriever.id } in ${duration(startTimestamp)}`, ); + } catch (e) { + this.logger.error( + `Failed to retrieve facts for retriever ${factRetriever.id}`, + e, + ); } try {