From 38842f77e549fd0946e43a40c65abe0f196c3f04 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Mon, 24 Nov 2025 00:45:29 +0000 Subject: fix: support invocation cancellation while awaiting sempahore --- packages/plugins/queue-restate/src/semaphore.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'packages/plugins/queue-restate/src/semaphore.ts') diff --git a/packages/plugins/queue-restate/src/semaphore.ts b/packages/plugins/queue-restate/src/semaphore.ts index 1aef037e..152604dc 100644 --- a/packages/plugins/queue-restate/src/semaphore.ts +++ b/packages/plugins/queue-restate/src/semaphore.ts @@ -1,5 +1,6 @@ // Inspired from https://github.com/restatedev/examples/blob/main/typescript/patterns-use-cases/src/priorityqueue/queue.ts +import * as restate from "@restatedev/restate-sdk"; import { Context, object, ObjectContext } from "@restatedev/restate-sdk"; interface QueueItem { @@ -100,7 +101,15 @@ export class RestateSemaphore { priority, capacity: this.capacity, }); - await awk.promise; + + try { + await awk.promise; + } catch (e) { + if (e instanceof restate.CancelledError) { + await this.release(); + throw e; + } + } } async release() { await this.ctx -- cgit v1.2.3-70-g09d2