From b09f73701d8b6ce0e3bc4ef28d0f5d9fc7fb5df1 Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Thu, 24 Jul 2025 11:21:42 +0200 Subject: [PATCH] fix(core): Decouple removing and closing destination from actually deleting it (#17614) --- packages/cli/src/controllers/e2e.controller.ts | 1 + packages/cli/src/eventbus/event-bus.controller.ts | 3 ++- .../message-event-bus/message-event-bus.ts | 14 +++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/controllers/e2e.controller.ts b/packages/cli/src/controllers/e2e.controller.ts index 55b5ef622f..6a7a91421c 100644 --- a/packages/cli/src/controllers/e2e.controller.ts +++ b/packages/cli/src/controllers/e2e.controller.ts @@ -269,6 +269,7 @@ export class E2EController { private async resetLogStreaming() { for (const id in this.eventBus.destinations) { await this.eventBus.removeDestination(id, false); + await this.eventBus.deleteDestination(id); } } diff --git a/packages/cli/src/eventbus/event-bus.controller.ts b/packages/cli/src/eventbus/event-bus.controller.ts index cc748aa525..271680bdbf 100644 --- a/packages/cli/src/eventbus/event-bus.controller.ts +++ b/packages/cli/src/eventbus/event-bus.controller.ts @@ -124,7 +124,8 @@ export class EventBusController { @GlobalScope('eventBusDestination:delete') async deleteDestination(req: AuthenticatedRequest) { if (isWithIdString(req.query)) { - return await this.eventBus.removeDestination(req.query.id); + await this.eventBus.removeDestination(req.query.id); + return await this.eventBus.deleteDestination(req.query.id); } else { throw new BadRequestError('Query is missing id'); } diff --git a/packages/cli/src/eventbus/message-event-bus/message-event-bus.ts b/packages/cli/src/eventbus/message-event-bus/message-event-bus.ts index e154583ff7..1e1351a1a5 100644 --- a/packages/cli/src/eventbus/message-event-bus/message-event-bus.ts +++ b/packages/cli/src/eventbus/message-event-bus/message-event-bus.ts @@ -240,20 +240,20 @@ export class MessageEventBus extends EventEmitter { return result.sort((a, b) => (a.__type ?? '').localeCompare(b.__type ?? '')); } - async removeDestination( - id: string, - notifyWorkers: boolean = true, - ): Promise { - let result; + async removeDestination(id: string, notifyWorkers: boolean = true) { if (Object.keys(this.destinations).includes(id)) { await this.destinations[id].close(); - result = await this.destinations[id].deleteFromDb(); delete this.destinations[id]; } if (notifyWorkers) { void this.publisher.publishCommand({ command: 'restart-event-bus' }); } - return result; + } + + async deleteDestination(id: string): Promise { + return await this.eventDestinationsRepository.delete({ + id, + }); } private async trySendingUnsent(msgs?: EventMessageTypes[]) {