worker-relay error timeout
continuous-integration/drone/push Build was killed Details

This commit is contained in:
Kieran 2024-02-29 12:11:06 +00:00
parent be48c9cc37
commit ed7929db50
5 changed files with 29 additions and 19 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@snort/worker-relay",
"version": "1.0.1",
"version": "1.0.2",
"description": "A nostr relay in a service worker",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@ -16,7 +16,7 @@
"dist"
],
"dependencies": {
"@sqlite.org/sqlite-wasm": "^3.44.2-build3",
"@sqlite.org/sqlite-wasm": "^3.45.1-build1",
"debug": "^4.3.4",
"eventemitter3": "^5.0.1",
"uuid": "^9.0.1"

View File

@ -3,7 +3,6 @@ import {
NostrEvent,
OkResponse,
ReqCommand,
ReqFilter,
WorkerMessage,
WorkerMessageCommand,
} from "./types";
@ -13,6 +12,9 @@ export class WorkerRelayInterface {
#worker: Worker;
#commandQueue: Map<string, (v: unknown, ports: ReadonlyArray<MessagePort>) => void> = new Map();
// Command timeout
timeout: number = 30_000;
constructor(path: string) {
this.#worker = new Worker(path, { type: "module" });
this.#worker.onmessage = e => {
@ -61,7 +63,7 @@ export class WorkerRelayInterface {
return this.#workerRpc<[string, EventMetadata], void>("setEventMetadata", [id, meta]);
}
#workerRpc<T, R>(cmd: WorkerMessageCommand, args?: T) {
async #workerRpc<T, R>(cmd: WorkerMessageCommand, args?: T) {
const id = uuid();
const msg = {
id,
@ -69,9 +71,17 @@ export class WorkerRelayInterface {
args,
} as WorkerMessage<T>;
this.#worker.postMessage(msg);
return new Promise<R>(resolve => {
return await new Promise<R>((resolve, reject) => {
const t = setTimeout(() => {
reject(new Error("Timeout"));
}, this.timeout);
this.#commandQueue.set(id, (v, port) => {
const cmdReply = v as WorkerMessage<R>;
clearTimeout(t);
const cmdReply = v as WorkerMessage<R & { error?: any }>;
if (cmdReply.args.error) {
reject(cmdReply.args.error);
return;
}
resolve(cmdReply.args);
});
});

View File

@ -151,7 +151,6 @@ globalThis.onmessage = async ev => {
}
}
} catch (e) {
console.error(e);
reply(msg.id, { error: JSON.stringify(e) });
}
};

View File

@ -8,6 +8,7 @@
"module": "ESNext",
"strict": true,
"declaration": true,
"declarationMap": true,
"inlineSourceMap": true,
"outDir": "dist",
"skipLibCheck": true

View File

@ -3023,7 +3023,7 @@ __metadata:
languageName: unknown
linkType: soft
"@snort/shared@^1.0.11, @snort/shared@^1.0.13, @snort/shared@^1.0.6, @snort/shared@workspace:*, @snort/shared@workspace:packages/shared":
"@snort/shared@^1.0.14, @snort/shared@^1.0.6, @snort/shared@workspace:*, @snort/shared@workspace:packages/shared":
version: 0.0.0-use.local
resolution: "@snort/shared@workspace:packages/shared"
dependencies:
@ -3042,8 +3042,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "@snort/system-react@workspace:packages/system-react"
dependencies:
"@snort/shared": ^1.0.13
"@snort/system": ^1.2.8
"@snort/shared": ^1.0.14
"@snort/system": ^1.2.12
"@types/react": ^18.2.14
react: ^18.2.0
typescript: ^5.2.2
@ -3071,14 +3071,14 @@ __metadata:
version: 0.0.0-use.local
resolution: "@snort/system-web@workspace:packages/system-web"
dependencies:
"@snort/shared": ^1.0.11
"@snort/system": ^1.2.0
"@snort/shared": ^1.0.14
"@snort/system": ^1.2.11
dexie: ^3.2.4
typescript: ^5.2.2
languageName: unknown
linkType: soft
"@snort/system@^1.0.21, @snort/system@^1.2.0, @snort/system@^1.2.8, @snort/system@workspace:*, @snort/system@workspace:packages/system":
"@snort/system@^1.0.21, @snort/system@^1.2.11, @snort/system@^1.2.12, @snort/system@workspace:*, @snort/system@workspace:packages/system":
version: 0.0.0-use.local
resolution: "@snort/system@workspace:packages/system"
dependencies:
@ -3087,7 +3087,7 @@ __metadata:
"@noble/hashes": ^1.3.2
"@peculiar/webcrypto": ^1.4.3
"@scure/base": ^1.1.2
"@snort/shared": ^1.0.13
"@snort/shared": ^1.0.14
"@stablelib/xchacha20": ^1.0.1
"@types/debug": ^4.1.8
"@types/jest": ^29.5.11
@ -3114,7 +3114,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@snort/worker-relay@workspace:packages/worker-relay"
dependencies:
"@sqlite.org/sqlite-wasm": ^3.44.2-build3
"@sqlite.org/sqlite-wasm": ^3.45.1-build1
"@types/debug": ^4.1.12
"@types/uuid": ^9.0.7
debug: ^4.3.4
@ -3131,12 +3131,12 @@ __metadata:
languageName: node
linkType: hard
"@sqlite.org/sqlite-wasm@npm:^3.44.2-build3":
version: 3.44.2-build3
resolution: "@sqlite.org/sqlite-wasm@npm:3.44.2-build3"
"@sqlite.org/sqlite-wasm@npm:^3.45.1-build1":
version: 3.45.1-build1
resolution: "@sqlite.org/sqlite-wasm@npm:3.45.1-build1"
bin:
sqlite-wasm: bin/index.js
checksum: 6df10114fcd5d41d61706496a4ad3ea303b71e844ccda6ded62009ec8f2b0f97547a1713b7a4c4e2e8b0691fca2d9127d0e099fff6802dd699bb7f3d0af2191c
checksum: 5d1beb4c120a4838fe2186af0c8a3c6d763629ce5fbfde482cbee2b96bc61da11b0296c83193b88755516a5d4c5773b4cbba2076457893825d4cc0c8b123f429
languageName: node
linkType: hard