diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-11-30 00:19:28 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-30 00:19:28 +0000 |
| commit | a71b9505ea76596659c98eb6180a09a895399741 (patch) | |
| tree | ceabe80e36d36f594e92c7b3823147abe6e6b474 /packages/plugins/queue-restate/src/service.ts | |
| parent | b12c1c3a82941f2767ade8f497db56933415b94d (diff) | |
| download | karakeep-a71b9505ea76596659c98eb6180a09a895399741.tar.zst | |
fix: Add restate queued idempotency (#2169)
* fix: Add restate queued idempotency
* return on failed to acquire
Diffstat (limited to 'packages/plugins/queue-restate/src/service.ts')
| -rw-r--r-- | packages/plugins/queue-restate/src/service.ts | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/plugins/queue-restate/src/service.ts b/packages/plugins/queue-restate/src/service.ts index b26f66cf..5ba7d1df 100644 --- a/packages/plugins/queue-restate/src/service.ts +++ b/packages/plugins/queue-restate/src/service.ts @@ -39,6 +39,7 @@ export function buildRestateService<T, R>( ctx: restate.Context, data: { payload: T; + queuedIdempotencyKey?: string; priority: number; groupId?: string; }, @@ -65,7 +66,14 @@ export function buildRestateService<T, R>( let lastError: Error | undefined; for (let runNumber = 0; runNumber <= NUM_RETRIES; runNumber++) { - await semaphore.acquire(priority, data.groupId); + const acquired = await semaphore.acquire( + priority, + data.groupId, + data.queuedIdempotencyKey, + ); + if (!acquired) { + return; + } const res = await runWorkerLogic(ctx, funcs, { id, data: payload, |
