n8n
Version:
n8n Workflow Automation Tool
29 lines (28 loc) • 1.16 kB
TypeScript
import { RedisClientService } from '../services/redis-client.service';
import { GlobalConfig } from '@n8n/config';
import { InstanceSettings } from 'n8n-core';
import { type Result } from 'n8n-workflow';
export type TtlRenewalResultKeyMissing = {
id: 'key-missing';
};
export type TtlRenewalResultOtherHostIsLeader = {
id: 'other-host-is-leader';
currentLeaderId: string;
};
export type TtlRenewalResultSuccess = {
id: 'success';
};
export type TtlRenewalResult = TtlRenewalResultKeyMissing | TtlRenewalResultOtherHostIsLeader | TtlRenewalResultSuccess;
export declare class LeaderElectionClient {
private readonly instanceSettings;
private readonly redisClient;
private readonly leaderKey;
private readonly leaderKeyTtlInS;
private get hostId();
constructor(instanceSettings: InstanceSettings, globalConfig: GlobalConfig, redisClientService: RedisClientService);
getLeader(): Promise<Result<string | null, Error>>;
setLeaderIfNotExists(): Promise<Result<boolean, Error>>;
tryRenewLeaderTtl(): Promise<Result<TtlRenewalResult, Error>>;
clearLeader(): Promise<Result<void, Error>>;
destroy(): void;
}