mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-26 06:17:21 +02:00
refactor(core): Ungate workflow indexing (#30971)
This commit is contained in:
parent
b062c08471
commit
694a7a0614
|
|
@ -19,10 +19,6 @@ export class WorkflowsConfig {
|
|||
@Env('N8N_WORKFLOW_ACTIVATION_BATCH_SIZE')
|
||||
activationBatchSize: number = 1;
|
||||
|
||||
/** Whether to build and maintain workflow dependency indexes (for example, for subworkflow callers). */
|
||||
@Env('N8N_WORKFLOWS_INDEXING_ENABLED')
|
||||
indexingEnabled: boolean = true;
|
||||
|
||||
/** Number of workflows to process per batch during dependency indexing on startup. Defaults to 10. */
|
||||
@Env('N8N_WORKFLOW_INDEX_BATCH_SIZE')
|
||||
indexingBatchSize: number = 10;
|
||||
|
|
|
|||
|
|
@ -204,7 +204,6 @@ describe('GlobalConfig', () => {
|
|||
defaultName: 'My workflow',
|
||||
callerPolicyDefaultOption: 'workflowsFromSameOwner',
|
||||
activationBatchSize: 1,
|
||||
indexingEnabled: true,
|
||||
indexingBatchSize: 10,
|
||||
useWorkflowPublicationService: false,
|
||||
autosaveDisabled: false,
|
||||
|
|
|
|||
|
|
@ -1,18 +1,12 @@
|
|||
import { GetResourceDependenciesDto, GetResourceDependencyCountsDto } from '@n8n/api-types';
|
||||
import { WorkflowsConfig } from '@n8n/config';
|
||||
import { AuthenticatedRequest } from '@n8n/db';
|
||||
import { Body, Post, RestController } from '@n8n/decorators';
|
||||
|
||||
import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error';
|
||||
|
||||
import { WorkflowDependencyQueryService } from './workflow-dependency-query.service';
|
||||
|
||||
@RestController('/workflow-dependencies')
|
||||
export class WorkflowDependencyController {
|
||||
constructor(
|
||||
private readonly workflowDependencyQueryService: WorkflowDependencyQueryService,
|
||||
private readonly workflowsConfig: WorkflowsConfig,
|
||||
) {}
|
||||
constructor(private readonly workflowDependencyQueryService: WorkflowDependencyQueryService) {}
|
||||
|
||||
@Post('/counts')
|
||||
async getResourceDependencyCounts(
|
||||
|
|
@ -20,8 +14,6 @@ export class WorkflowDependencyController {
|
|||
_res: unknown,
|
||||
@Body body: GetResourceDependencyCountsDto,
|
||||
) {
|
||||
this.assertIndexingEnabled();
|
||||
|
||||
return await this.workflowDependencyQueryService.getDependencyCounts(
|
||||
body.resourceIds,
|
||||
body.resourceType,
|
||||
|
|
@ -35,18 +27,10 @@ export class WorkflowDependencyController {
|
|||
_res: unknown,
|
||||
@Body body: GetResourceDependenciesDto,
|
||||
) {
|
||||
this.assertIndexingEnabled();
|
||||
|
||||
return await this.workflowDependencyQueryService.getResourceDependencies(
|
||||
body.resourceIds,
|
||||
body.resourceType,
|
||||
req.user,
|
||||
);
|
||||
}
|
||||
|
||||
private assertIndexingEnabled() {
|
||||
if (!this.workflowsConfig.indexingEnabled) {
|
||||
throw new ServiceUnavailableError('Workflow dependency indexing is not enabled');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { inDevelopment, inProduction } from '@n8n/backend-common';
|
||||
import { SecurityConfig, WorkflowsConfig } from '@n8n/config';
|
||||
import { SecurityConfig } from '@n8n/config';
|
||||
import { Time } from '@n8n/constants';
|
||||
import type { APIRequest, AuthenticatedRequest } from '@n8n/db';
|
||||
import { Container, Service } from '@n8n/di';
|
||||
|
|
@ -492,12 +492,10 @@ export class Server extends AbstractServer {
|
|||
}
|
||||
|
||||
private async initializeWorkflowIndexing() {
|
||||
if (Container.get(WorkflowsConfig).indexingEnabled) {
|
||||
const { WorkflowIndexService } = await import(
|
||||
'@/modules/workflow-index/workflow-index.service'
|
||||
);
|
||||
Container.get(WorkflowIndexService).init();
|
||||
}
|
||||
const { WorkflowIndexService } = await import(
|
||||
'@/modules/workflow-index/workflow-index.service'
|
||||
);
|
||||
Container.get(WorkflowIndexService).init();
|
||||
}
|
||||
|
||||
protected setupPushServer(): void {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import {
|
|||
randomCredentialPayload,
|
||||
shareWorkflowWithUsers,
|
||||
} from '@n8n/backend-test-utils';
|
||||
import { WorkflowsConfig } from '@n8n/config';
|
||||
import { WorkflowDependencyRepository } from '@n8n/db';
|
||||
import { Container } from '@n8n/di';
|
||||
|
||||
|
|
@ -13,7 +12,6 @@ import * as utils from '../shared/utils';
|
|||
|
||||
let testServer: ReturnType<typeof utils.setupTestServer>;
|
||||
let depRepo: WorkflowDependencyRepository;
|
||||
let workflowsConfig: WorkflowsConfig;
|
||||
|
||||
testServer = utils.setupTestServer({
|
||||
endpointGroups: ['workflowDependencies'],
|
||||
|
|
@ -22,11 +20,6 @@ testServer = utils.setupTestServer({
|
|||
|
||||
beforeAll(() => {
|
||||
depRepo = Container.get(WorkflowDependencyRepository);
|
||||
workflowsConfig = Container.get(WorkflowsConfig);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
workflowsConfig.indexingEnabled = true;
|
||||
});
|
||||
|
||||
/** Seed a workflow_dependency row (draft). */
|
||||
|
|
@ -408,35 +401,3 @@ describe('POST /workflow-dependencies/details', () => {
|
|||
expect(resp.statusCode).toBe(400);
|
||||
});
|
||||
});
|
||||
|
||||
describe('indexing disabled', () => {
|
||||
it('should return 503 for counts when indexing is disabled', async () => {
|
||||
workflowsConfig.indexingEnabled = false;
|
||||
const owner = await createOwner();
|
||||
|
||||
const resp = await testServer
|
||||
.authAgentFor(owner)
|
||||
.post('/workflow-dependencies/counts')
|
||||
.send({
|
||||
resourceIds: ['some-id'],
|
||||
resourceType: 'workflow',
|
||||
});
|
||||
|
||||
expect(resp.statusCode).toBe(503);
|
||||
});
|
||||
|
||||
it('should return 503 for details when indexing is disabled', async () => {
|
||||
workflowsConfig.indexingEnabled = false;
|
||||
const owner = await createOwner();
|
||||
|
||||
const resp = await testServer
|
||||
.authAgentFor(owner)
|
||||
.post('/workflow-dependencies/details')
|
||||
.send({
|
||||
resourceIds: ['some-id'],
|
||||
resourceType: 'workflow',
|
||||
});
|
||||
|
||||
expect(resp.statusCode).toBe(503);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user