跳到主要内容

RunManager

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:66

RunManager - 任务运行生命周期管理器

负责 TriggerRun 实体的完整生命周期,包括:

核心职责:

  • 创建运行记录(createRun / createBatchRuns)
  • 执行任务(executeRun)
  • 幂等性保证:通过 idempotencyKey 防止重复创建
  • 分布式锁:使用 CAS 原子操作获取执行租约(lease)
  • 重试机制:支持指数退避重试和自定义 catchError
  • 进度追踪:支持 debounced 进度更新
  • 孤儿处理:恢复因标签页崩溃而遗留的 EXECUTING 任务
  • TTL 管理:自动标记过期任务为 EXPIRED

并发安全:

  • 使用 lease 机制确保同一时间只有一个执行者
  • CAS 原子更新防止多标签页同时修改同一行数据
  • 心跳续约(lease renewal)防止执行者崩溃后任务永久挂起

重试策略:

  • 默认最多 3 次重试,指数退避(factor=2)
  • 支持自定义 retry 配置和 catchError 错误处理
  • 跳过重试时调用方可通过 catchResult.skipRetrying 显式声明

Constructors

Constructor

new RunManager(
rxdb,
registry,
queueEngine,
tabId,
atomicTransition?,
options?): RunManager;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:79

Parameters

ParameterType
rxdbRxDB
registryTaskRegistry
queueEngineQueueEngine
tabIdstring
atomicTransition?AtomicTransition
options?{ leaseDurationMs?: number; leaseRenewalMs?: number; }
options.leaseDurationMs?number
options.leaseRenewalMs?number

Returns

RunManager

Methods

cancelRun()

cancelRun(runId): Promise<void>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:424

Parameters

ParameterType
runIdstring

Returns

Promise<void>


createBatchRuns()

createBatchRuns(
taskId,
items,
batchId): Promise<TriggerRun[]>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:150

Parameters

ParameterType
taskIdstring
itemsobject[]
batchIdstring

Returns

Promise<TriggerRun[]>


createRun()

createRun(
taskId,
payload,
options?): Promise<TriggerRun>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:96

Parameters

ParameterType
taskIdstring
payloadunknown
options?TriggerOptions

Returns

Promise<TriggerRun>


destroy()

destroy(): void;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:599

Returns

void


executeRun()

executeRun(runId, options?): Promise<void>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:242

Parameters

ParameterType
runIdstring
options?{ queueName?: string; queueSlotAcquired?: boolean; }
options.queueName?string
options.queueSlotAcquired?boolean

Returns

Promise<void>


expireRun()

expireRun(run): Promise<void>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:572

Parameters

ParameterType
runTriggerRun

Returns

Promise<void>


findDelayedReady()

findDelayedReady(now, limit): Promise<TriggerRun[]>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:522

Parameters

ParameterType
nowDate
limitnumber

Returns

Promise<TriggerRun[]>


findExpiredRuns()

findExpiredRuns(now, limit): Promise<TriggerRun[]>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:556

Parameters

ParameterType
nowDate
limitnumber

Returns

Promise<TriggerRun[]>


findQueuedRuns()

findQueuedRuns(limit): Promise<TriggerRun[]>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:581

Parameters

ParameterType
limitnumber

Returns

Promise<TriggerRun[]>


findStaleLeases()

findStaleLeases(now, limit): Promise<TriggerRun[]>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:539

Parameters

ParameterType
nowDate
limitnumber

Returns

Promise<TriggerRun[]>


getRun()

getRun(runId): Promise<TriggerRun | undefined>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:664

Parameters

ParameterType
runIdstring

Returns

Promise<TriggerRun | undefined>


handleOrphan()

handleOrphan(run): Promise<void>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:462

Parameters

ParameterType
runTriggerRun

Returns

Promise<void>


onReady()

onReady(): Promise<number>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:615

Returns

Promise<number>


replayRun()

replayRun(runId, options?): Promise<TriggerRun>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:653

Parameters

ParameterType
runIdstring
options?TriggerOptions

Returns

Promise<TriggerRun>


transitionToQueued()

transitionToQueued(runId): Promise<boolean>;

Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:507

Parameters

ParameterType
runIdstring

Returns

Promise<boolean>