From d67f2a27ead4bac4b24990a2a7336fb26138bd30 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 12 Sep 2024 11:30:57 -0500 Subject: [PATCH] stats: use the NPostgres transaction method to avoid transactions within transactions --- src/pipeline.ts | 3 +-- src/storages/EventsDB.ts | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pipeline.ts b/src/pipeline.ts index 4153cd41..afc7acdf 100644 --- a/src/pipeline.ts +++ b/src/pipeline.ts @@ -117,9 +117,8 @@ async function hydrateEvent(event: DittoEvent, signal: AbortSignal): Promise { if (NKinds.ephemeral(event.kind)) return; const store = await Storages.db(); - const kysely = await Storages.kysely(); - await kysely.transaction().execute(async (kysely) => { + await store.transaction(async (store, kysely) => { await updateStats({ event, store, kysely }); await store.event(event, { signal }); }); diff --git a/src/storages/EventsDB.ts b/src/storages/EventsDB.ts index 72cd9bb3..148a30aa 100644 --- a/src/storages/EventsDB.ts +++ b/src/storages/EventsDB.ts @@ -316,6 +316,10 @@ class EventsDB implements NStore { return filters; } + + async transaction(callback: (store: NPostgres, kysely: Kysely) => Promise): Promise { + return this.store.transaction((store, kysely) => callback(store, kysely as unknown as Kysely)); + } } export { EventsDB };