worker-relay error timeout
Some checks reported errors
continuous-integration/drone/push Build was killed

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

View File

@ -3,7 +3,6 @@ import {
NostrEvent, NostrEvent,
OkResponse, OkResponse,
ReqCommand, ReqCommand,
ReqFilter,
WorkerMessage, WorkerMessage,
WorkerMessageCommand, WorkerMessageCommand,
} from "./types"; } from "./types";
@ -13,6 +12,9 @@ export class WorkerRelayInterface {
#worker: Worker; #worker: Worker;
#commandQueue: Map<string, (v: unknown, ports: ReadonlyArray<MessagePort>) => void> = new Map(); #commandQueue: Map<string, (v: unknown, ports: ReadonlyArray<MessagePort>) => void> = new Map();
// Command timeout
timeout: number = 30_000;
constructor(path: string) { constructor(path: string) {
this.#worker = new Worker(path, { type: "module" }); this.#worker = new Worker(path, { type: "module" });
this.#worker.onmessage = e => { this.#worker.onmessage = e => {
@ -61,7 +63,7 @@ export class WorkerRelayInterface {
return this.#workerRpc<[string, EventMetadata], void>("setEventMetadata", [id, meta]); 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 id = uuid();
const msg = { const msg = {
id, id,
@ -69,9 +71,17 @@ export class WorkerRelayInterface {
args, args,
} as WorkerMessage<T>; } as WorkerMessage<T>;
this.#worker.postMessage(msg); 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) => { 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); resolve(cmdReply.args);
}); });
}); });

View File

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

View File

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

View File

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