fix(core): Tighten checks for multi-main setup usage (#7788)

https://n8nio.slack.com/archives/C05HRPLSGTT/p1700731476321999?thread_ts=1700729359.746899&cid=C05HRPLSGTT
This commit is contained in:
Iván Ovejero 2023-11-23 12:18:39 +01:00 committed by GitHub
parent 6208af07eb
commit fdb2c18ecc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 20 deletions

View file

@ -4,7 +4,6 @@
import { Service } from 'typedi'; import { Service } from 'typedi';
import { ActiveWorkflows, NodeExecuteFunctions } from 'n8n-core'; import { ActiveWorkflows, NodeExecuteFunctions } from 'n8n-core';
import config from '@/config';
import type { import type {
ExecutionError, ExecutionError,
@ -99,9 +98,7 @@ export class ActiveWorkflowRunner implements IWebhookManager {
) {} ) {}
async init() { async init() {
if (config.getEnv('executions.mode') === 'queue' && config.getEnv('multiMainSetup.enabled')) { await this.multiMainSetup.init();
await this.multiMainSetup.init();
}
await this.addActiveWorkflows('init'); await this.addActiveWorkflows('init');

View file

@ -51,9 +51,7 @@ export class License {
return; return;
} }
if (config.getEnv('executions.mode') === 'queue' && config.getEnv('multiMainSetup.enabled')) { await this.multiMainSetup.init();
await this.multiMainSetup.init();
}
const isMainInstance = instanceType === 'main'; const isMainInstance = instanceType === 'main';
const server = config.getEnv('license.serverUrl'); const server = config.getEnv('license.serverUrl');

View file

@ -117,7 +117,7 @@ export class Start extends BaseCommand {
this.pruningService.stopPruning(); this.pruningService.stopPruning();
} }
if (config.getEnv('executions.mode') === 'queue' && config.getEnv('multiMainSetup.enabled')) { if (Container.get(MultiMainSetup).isEnabled) {
await this.activeWorkflowRunner.removeAllTriggerAndPollerBasedWorkflows(); await this.activeWorkflowRunner.removeAllTriggerAndPollerBasedWorkflows();
await Container.get(MultiMainSetup).shutdown(); await Container.get(MultiMainSetup).shutdown();

View file

@ -14,6 +14,7 @@ export class MultiMainSetup extends SingleMainSetup {
return ( return (
config.getEnv('executions.mode') === 'queue' && config.getEnv('executions.mode') === 'queue' &&
config.getEnv('multiMainSetup.enabled') && config.getEnv('multiMainSetup.enabled') &&
config.getEnv('generic.instanceType') === 'main' &&
this.isLicensed this.isLicensed
); );
} }
@ -37,7 +38,7 @@ export class MultiMainSetup extends SingleMainSetup {
private leaderCheckInterval: NodeJS.Timer | undefined; private leaderCheckInterval: NodeJS.Timer | undefined;
async init() { async init() {
if (this.isInitialized) return; if (!this.isEnabled || this.isInitialized) return;
await this.initPublisher(); await this.initPublisher();

View file

@ -40,6 +40,7 @@ export class PruningService {
if ( if (
config.getEnv('multiMainSetup.enabled') && config.getEnv('multiMainSetup.enabled') &&
config.getEnv('generic.instanceType') === 'main' &&
config.getEnv('multiMainSetup.instanceType') === 'follower' config.getEnv('multiMainSetup.instanceType') === 'follower'
) { ) {
return false; return false;

View file

@ -372,19 +372,17 @@ export class WorkflowsService {
} }
} }
if (config.getEnv('executions.mode') === 'queue' && config.getEnv('multiMainSetup.enabled')) { const multiMainSetup = Container.get(MultiMainSetup);
const multiMainSetup = Container.get(MultiMainSetup);
await multiMainSetup.init(); await multiMainSetup.init();
if (multiMainSetup.isEnabled) { if (multiMainSetup.isEnabled) {
await Container.get(MultiMainSetup).broadcastWorkflowActiveStateChanged({ await Container.get(MultiMainSetup).broadcastWorkflowActiveStateChanged({
workflowId, workflowId,
oldState, oldState,
newState: updatedWorkflow.active, newState: updatedWorkflow.active,
versionId: shared.workflow.versionId, versionId: shared.workflow.versionId,
}); });
}
} }
return updatedWorkflow; return updatedWorkflow;