UNPKG

nest-leader-election

Version:
41 lines (40 loc) 1.39 kB
import { Repository, type DataSource } from "typeorm"; import { LeaderLease } from "../entities/index.js"; export interface LeaderElectorConfig { leaseDuration?: number; renewalInterval?: number; baseCleanInterval?: number; jitterRange?: number; lockId?: number; instanceId?: string; schema?: string; createTableOnInit?: boolean; } export declare class LeaderElectorCore { private readonly leaderLeaseRepository; name: string; private readonly logger; private readonly LOCK_ID; private isLeader; private renewalTimer?; private readonly baseLeaseDuration; private readonly baseCleanInterval; private readonly baseRenewalInterval; private readonly jitterRange; private readonly instanceId; private readonly schema; private readonly createTableOnInit; constructor(leaderLeaseRepository: Repository<LeaderLease>, config: LeaderElectorConfig); static create(dataSource: DataSource, config: LeaderElectorConfig): Promise<LeaderElectorCore>; protected initialize(): Promise<void>; private getJitter; private createLockTableIfNotExists; private startCleanupJob; private cleanupExpiredLeases; private tryAcquireLeaseWithJitter; private tryAcquireLease; private handleLeadershipAcquired; release(): Promise<void>; shutdown(): Promise<void>; amILeader(): boolean; }