lock-manager.d.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { AbortController } from './abort-controller';
  2. import { LockManagerWorkerContext } from '../interfaces';
  3. export interface LockManagerOptions {
  4. lockRenewTime: number;
  5. lockDuration: number;
  6. workerId: string;
  7. workerName?: string;
  8. }
  9. /**
  10. * Manages lock renewal for BullMQ workers.
  11. * It periodically extends locks for active jobs to prevent them from being
  12. * considered stalled by other workers.
  13. */
  14. export declare class LockManager {
  15. protected worker: LockManagerWorkerContext;
  16. protected opts: LockManagerOptions;
  17. protected lockRenewalTimer?: NodeJS.Timeout;
  18. protected trackedJobs: Map<string, {
  19. token: string;
  20. ts: number;
  21. abortController?: AbortController;
  22. }>;
  23. protected closed: boolean;
  24. constructor(worker: LockManagerWorkerContext, opts: LockManagerOptions);
  25. /**
  26. * Starts the lock manager timers for lock renewal.
  27. */
  28. start(): void;
  29. protected extendLocks(jobIds: string[]): Promise<void>;
  30. private startLockExtenderTimer;
  31. /**
  32. * Stops the lock manager and clears all timers.
  33. */
  34. close(): Promise<void>;
  35. /**
  36. * Adds a job to be tracked for lock renewal.
  37. * Returns an AbortController if shouldCreateController is true, undefined otherwise.
  38. */
  39. trackJob(jobId: string, token: string, ts: number, shouldCreateController?: boolean): AbortController | undefined;
  40. /**
  41. * Removes a job from lock renewal tracking.
  42. */
  43. untrackJob(jobId: string): void;
  44. /**
  45. * Gets the number of jobs currently being tracked.
  46. */
  47. getActiveJobCount(): number;
  48. /**
  49. * Checks if the lock manager is running.
  50. */
  51. isRunning(): boolean;
  52. /**
  53. * Cancels a specific job by aborting its signal.
  54. * @param jobId - The ID of the job to cancel
  55. * @param reason - Optional reason for the cancellation
  56. * @returns true if the job was found and cancelled, false otherwise
  57. */
  58. cancelJob(jobId: string, reason?: string): boolean;
  59. /**
  60. * Cancels all tracked jobs by aborting their signals.
  61. * @param reason - Optional reason for the cancellation
  62. */
  63. cancelAllJobs(reason?: string): void;
  64. /**
  65. * Gets a list of all tracked job IDs.
  66. * @returns Array of job IDs currently being tracked
  67. */
  68. getTrackedJobIds(): string[];
  69. }