From 5fec5deb063850d15f97c9638725495041c7b6cd Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Fri, 21 Feb 2025 20:22:58 -0600 Subject: [PATCH] publishEvent: publish to pool in background, catch errors and log --- packages/ditto/utils/api.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/ditto/utils/api.ts b/packages/ditto/utils/api.ts index f2aa4ab2..9873fb2c 100644 --- a/packages/ditto/utils/api.ts +++ b/packages/ditto/utils/api.ts @@ -12,6 +12,7 @@ import { RelayError } from '@/RelayError.ts'; import { Storages } from '@/storages.ts'; import { nostrNow } from '@/utils.ts'; import { parseFormData } from '@/utils/formdata.ts'; +import { errorJson } from '@/utils/log.ts'; import { purifyEvent } from '@/utils/purify.ts'; /** EventTemplate with defaults. */ @@ -158,9 +159,16 @@ async function updateNames(k: number, d: string, n: Record, c: async function publishEvent(event: NostrEvent, c: AppContext): Promise { logi({ level: 'info', ns: 'ditto.event', source: 'api', id: event.id, kind: event.kind }); try { - await pipeline.handleEvent(event, { source: 'api', signal: c.req.raw.signal }); - const client = await Storages.client(); - await client.event(purifyEvent(event)); + const promise = pipeline.handleEvent(event, { source: 'api', signal: c.req.raw.signal }); + + promise.then(async () => { + const client = await Storages.client(); + await client.event(purifyEvent(event)); + }).catch((e: unknown) => { + logi({ level: 'error', ns: 'ditto.pool', id: event.id, kind: event.kind, error: errorJson(e) }); + }); + + await promise; } catch (e) { if (e instanceof RelayError) { throw new HTTPException(422, {