From cac17267fbe83f25181c4f8503c01b92694c46be Mon Sep 17 00:00:00 2001 From: Raashid Anwar Date: Tue, 5 Dec 2023 23:46:47 +0530 Subject: fix(ext/kv): throw error if already closed (#21459) If KV is closed and tries to listen queue should throw an error closes #20991 --- ext/kv/01_db.ts | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'ext/kv') diff --git a/ext/kv/01_db.ts b/ext/kv/01_db.ts index 73deee27f..2b0e141f8 100644 --- a/ext/kv/01_db.ts +++ b/ext/kv/01_db.ts @@ -64,6 +64,7 @@ const kvSymbol = Symbol("KvRid"); class Kv { #rid: number; + #isClosed: boolean; constructor(rid: number = undefined, symbol: symbol = undefined) { if (kvSymbol !== symbol) { @@ -72,6 +73,7 @@ class Kv { ); } this.#rid = rid; + this.#isClosed = false; } atomic() { @@ -251,6 +253,9 @@ class Kv { async listenQueue( handler: (message: unknown) => Promise | void, ): Promise { + if (this.#isClosed) { + throw new Error("already closed"); + } const finishMessageOps = new Map>(); while (true) { // Wait for the next message. @@ -366,6 +371,7 @@ class Kv { close() { core.close(this.#rid); + this.#isClosed = true; } [SymbolDispose]() { -- cgit v1.2.3