From 5863c45d4bc730f6357252247c23c775bfd9f4c2 Mon Sep 17 00:00:00 2001 From: Etienne <45695613+etiennejouan@users.noreply.github.com> Date: Fri, 21 Feb 2025 12:12:08 +0100 Subject: [PATCH] cleaning workspace job - fix on soft delete condition (#10380) Context If the command runs multiple times, soft deleted workspaces are soft deleted again (+ email spamming) Solution Check for soft deletion before entering soft delete condition --- .../services/cleaner.workspace-service.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts index f9e1d2fc9..53740ff38 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts @@ -17,6 +17,7 @@ import { UserService } from 'src/engine/core-modules/user/services/user.service' import { UserVarsService } from 'src/engine/core-modules/user/user-vars/services/user-vars.service'; import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { USER_WORKSPACE_DELETION_WARNING_SENT_KEY } from 'src/engine/workspace-manager/workspace-cleaner/constants/user-workspace-deletion-warning-sent-key.constant'; import { WorkspaceCleanerException, @@ -42,6 +43,7 @@ export class CleanerWorkspaceService { private readonly workspaceRepository: Repository, @InjectRepository(BillingSubscription, 'core') private readonly billingSubscriptionRepository: Repository, + private readonly twentyORMGlobalManager: TwentyORMGlobalManager, ) { this.inactiveDaysBeforeSoftDelete = this.environmentService.get( 'WORKSPACE_INACTIVE_DAYS_BEFORE_SOFT_DELETION', @@ -291,7 +293,10 @@ export class CleanerWorkspaceService { continue; } - if (workspaceInactivity > this.inactiveDaysBeforeSoftDelete) { + if ( + workspaceInactivity > this.inactiveDaysBeforeSoftDelete && + !isDefined(workspace.deletedAt) + ) { await this.informWorkspaceMembersAndSoftDeleteWorkspace( workspace, workspaceInactivity, @@ -315,6 +320,10 @@ export class CleanerWorkspaceService { `Error while processing workspace ${workspace.id} ${workspace.displayName}: ${error}`, ); } + + await this.twentyORMGlobalManager.destroyDataSourceForWorkspace( + workspace.id, + ); } this.logger.log( `${dryRun ? 'DRY RUN - ' : ''}batchWarnOrCleanSuspendedWorkspaces done!`,