diff --git a/packages/cli/src/WaitTracker.ts b/packages/cli/src/WaitTracker.ts index 4e1bcb7585387..af71c22c49d71 100644 --- a/packages/cli/src/WaitTracker.ts +++ b/packages/cli/src/WaitTracker.ts @@ -29,15 +29,18 @@ export class WaitTracker { private readonly workflowRunner: WorkflowRunner, readonly orchestrationService: OrchestrationService, ) { - const { isLeader, isMultiMainSetupEnabled, multiMainSetup } = orchestrationService; + const { isSingleMainSetup, isLeader, multiMainSetup } = orchestrationService; + + if (isSingleMainSetup) { + this.startTracking(); + return; + } if (isLeader) this.startTracking(); - if (isMultiMainSetupEnabled) { - multiMainSetup - .on('leader-takeover', () => this.startTracking()) - .on('leader-stepdown', () => this.stopTracking()); - } + multiMainSetup + .on('leader-takeover', () => this.startTracking()) + .on('leader-stepdown', () => this.stopTracking()); } startTracking() { diff --git a/packages/cli/src/services/orchestration.service.ts b/packages/cli/src/services/orchestration.service.ts index cc0724aaf14dc..3d74f187acced 100644 --- a/packages/cli/src/services/orchestration.service.ts +++ b/packages/cli/src/services/orchestration.service.ts @@ -33,6 +33,10 @@ export class OrchestrationService { ); } + get isSingleMainSetup() { + return !this.isMultiMainSetupEnabled; + } + redisPublisher: RedisServicePubSubPublisher; get instanceId() { @@ -40,7 +44,7 @@ export class OrchestrationService { } /** - * Whether this instance is the leader in a multi-main setup. Always `true` in single-main setup. + * Whether this instance is the leader in a multi-main setup. Always `false` in single-main setup. */ get isLeader() { return config.getEnv('multiMainSetup.instanceType') === 'leader'; diff --git a/packages/cli/test/unit/WaitTracker.test.ts b/packages/cli/test/unit/WaitTracker.test.ts index a3e26826e276b..b355adb679a4d 100644 --- a/packages/cli/test/unit/WaitTracker.test.ts +++ b/packages/cli/test/unit/WaitTracker.test.ts @@ -10,8 +10,7 @@ jest.useFakeTimers(); describe('WaitTracker', () => { const executionRepository = mock(); const orchestrationService = mock({ - isLeader: true, - isMultiMainSetupEnabled: false, + isSingleMainSetup: true, }); const execution = mock({ @@ -105,11 +104,21 @@ describe('WaitTracker', () => { }); }); + describe('single-main setup', () => { + it('should start tracking', () => { + executionRepository.getWaitingExecutions.mockResolvedValue([]); + + new WaitTracker(mock(), executionRepository, mock(), mock(), orchestrationService); + + expect(executionRepository.getWaitingExecutions).toHaveBeenCalledTimes(1); + }); + }); + describe('multi-main setup', () => { it('should start tracking if leader', () => { const orchestrationService = mock({ isLeader: true, - isMultiMainSetupEnabled: true, + isSingleMainSetup: false, multiMainSetup: mock({ on: jest.fn().mockReturnThis() }), }); @@ -123,7 +132,7 @@ describe('WaitTracker', () => { it('should not start tracking if follower', () => { const orchestrationService = mock({ isLeader: false, - isMultiMainSetupEnabled: true, + isSingleMainSetup: false, multiMainSetup: mock({ on: jest.fn().mockReturnThis() }), });