aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins/queue-restate/src/service.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-11-30 00:19:28 +0000
committerGitHub <noreply@github.com>2025-11-30 00:19:28 +0000
commita71b9505ea76596659c98eb6180a09a895399741 (patch)
treeceabe80e36d36f594e92c7b3823147abe6e6b474 /packages/plugins/queue-restate/src/service.ts
parentb12c1c3a82941f2767ade8f497db56933415b94d (diff)
downloadkarakeep-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.ts10
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,