From db16933c5e458cff6fe373670a26fa73a41d7450 Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Thu, 20 Nov 2025 11:11:56 +0100 Subject: [PATCH] chore(core): Add instanceType condition to load insights module only for main aand webhook (#22052) --- .../insights/__tests__/insights.module.test.ts | 15 ++++++++++++++- .../cli/src/modules/insights/insights.module.ts | 13 +++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/cli/src/modules/insights/__tests__/insights.module.test.ts b/packages/cli/src/modules/insights/__tests__/insights.module.test.ts index 865473eda26..10d1246d5ba 100644 --- a/packages/cli/src/modules/insights/__tests__/insights.module.test.ts +++ b/packages/cli/src/modules/insights/__tests__/insights.module.test.ts @@ -7,6 +7,7 @@ import { mock } from 'jest-mock-extended'; import { InstanceSettings } from 'n8n-core'; import { InsightsModule } from '../insights.module'; +import { InsightsService } from '../insights.service'; describe('InsightsModule', () => { let insightsModule: InsightsModule; @@ -23,11 +24,23 @@ describe('InsightsModule', () => { beforeEach(async () => { jest.clearAllMocks(); await testDb.truncate(['Project']); - insightsModule = Container.get(InsightsModule); + mockInstanceSettings = mock(); Container.set(InstanceSettings, mockInstanceSettings); Container.set(Logger, mockLogger()); Container.set(LicenseState, mock()); + Container.set( + InsightsService, + new InsightsService( + mock(), + mock(), + mock(), + Container.get(LicenseState), + mockInstanceSettings, + Container.get(Logger), + ), + ); + insightsModule = Container.get(InsightsModule); await createTeamProject(); }); diff --git a/packages/cli/src/modules/insights/insights.module.ts b/packages/cli/src/modules/insights/insights.module.ts index af495da88d4..3ba880b2b19 100644 --- a/packages/cli/src/modules/insights/insights.module.ts +++ b/packages/cli/src/modules/insights/insights.module.ts @@ -1,17 +1,14 @@ import type { ModuleInterface } from '@n8n/decorators'; import { BackendModule, OnShutdown } from '@n8n/decorators'; import { Container } from '@n8n/di'; -import { InstanceSettings } from 'n8n-core'; -@BackendModule({ name: 'insights' }) +/** + * Only main- and webhook-type instances collect insights because + * only they are informed of finished workflow executions. + */ +@BackendModule({ name: 'insights', instanceTypes: ['main', 'webhook'] }) export class InsightsModule implements ModuleInterface { async init() { - /** - * Only main- and webhook-type instances collect insights because - * only they are informed of finished workflow executions. - */ - if (Container.get(InstanceSettings).instanceType === 'worker') return; - await import('./insights.controller'); const { InsightsService } = await import('./insights.service');