From 6d0611dafe3d19f97c75533ae6b66d8db14baa6e Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 23 Sep 2024 18:04:12 -0500 Subject: [PATCH] Pass signal into policy --- src/pipeline.ts | 6 +++--- src/workers/policy.ts | 2 ++ src/workers/policy.worker.ts | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/pipeline.ts b/src/pipeline.ts index d89c6cef..eb06c12b 100644 --- a/src/pipeline.ts +++ b/src/pipeline.ts @@ -49,7 +49,7 @@ async function handleEvent(event: DittoEvent, signal: AbortSignal): Promise { +async function policyFilter(event: NostrEvent, signal: AbortSignal): Promise { const debug = Debug('ditto:policy'); try { - const result = await policyWorker.call(event); + const result = await policyWorker.call(event, signal); policyEventsCounter.inc({ ok: String(result[2]) }); debug(JSON.stringify(result)); RelayError.assert(result); diff --git a/src/workers/policy.ts b/src/workers/policy.ts index 7bf3f7bf..65a6e79a 100644 --- a/src/workers/policy.ts +++ b/src/workers/policy.ts @@ -4,6 +4,8 @@ import * as Comlink from 'comlink'; import { Conf } from '@/config.ts'; import type { CustomPolicy } from '@/workers/policy.worker.ts'; +import '@/workers/handlers/abortsignal.ts'; + const console = new Stickynotes('ditto:policy'); export const policyWorker = Comlink.wrap( diff --git a/src/workers/policy.worker.ts b/src/workers/policy.worker.ts index c7a16e30..0c115821 100644 --- a/src/workers/policy.worker.ts +++ b/src/workers/policy.worker.ts @@ -6,6 +6,8 @@ import * as Comlink from 'comlink'; import { DittoDB } from '@/db/DittoDB.ts'; import { EventsDB } from '@/storages/EventsDB.ts'; +import '@/workers/handlers/abortsignal.ts'; + // @ts-ignore Don't try to access the env from this worker. Deno.env = new Map(); @@ -25,8 +27,8 @@ export class CustomPolicy implements NPolicy { private policy: NPolicy = new ReadOnlyPolicy(); // deno-lint-ignore require-await - async call(event: NostrEvent): Promise { - return this.policy.call(event); + async call(event: NostrEvent, signal?: AbortSignal): Promise { + return this.policy.call(event, signal); } async init({ path, cwd, databaseUrl, adminPubkey }: PolicyInit): Promise {