From 5b7f445e338d8a06ec7339b69f7889107afb5157 Mon Sep 17 00:00:00 2001 From: carlosmonastyrski Date: Tue, 27 May 2025 18:28:00 -0300 Subject: [PATCH] PIT: fix for folder commit order on cascade deletion --- .../folder-commit/folder-commit-service.ts | 63 +++++++++---------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/backend/src/services/folder-commit/folder-commit-service.ts b/backend/src/services/folder-commit/folder-commit-service.ts index 857040bf1..52e2b3ecc 100644 --- a/backend/src/services/folder-commit/folder-commit-service.ts +++ b/backend/src/services/folder-commit/folder-commit-service.ts @@ -712,22 +712,6 @@ export const folderCommitServiceFactory = ({ })); logger.info(`Found ${changes.length} changes for ${folderId}`); - await Promise.all( - changes - .filter((change) => change.type === ChangeType.DELETE && change.folderVersionId) - .map(async (change) => { - await createDeleteCommitForNestedFolders({ - folderId: change.folderId, - actorMetadata, - actorType, - envId, - parentFolderName: folderVersion.name, - step: step + 1, - tx - }); - }) - ); - const newCommit = await folderCommitDAL.create( { actorMetadata, @@ -756,6 +740,22 @@ export const folderCommitServiceFactory = ({ ); }) ); + + await Promise.all( + changes + .filter((change) => change.type === ChangeType.DELETE && change.folderVersionId) + .map(async (change) => { + await createDeleteCommitForNestedFolders({ + folderId: change.folderId, + actorMetadata, + actorType, + envId, + parentFolderName: folderVersion.name, + step: step + 1, + tx + }); + }) + ); }; /** @@ -780,21 +780,6 @@ export const folderCommitServiceFactory = ({ throw new NotFoundError({ message: `Folder with ID ${data.folderId} not found` }); } - await Promise.all( - data.changes.map(async (change) => { - if (change.type === ChangeType.DELETE && change.folderId) { - await createDeleteCommitForNestedFolders({ - folderId: change.folderId, - actorMetadata: metadata, - actorType: data.actor.type, - envId: folder.envId, - parentFolderName: folder.name, - tx - }); - } - }) - ); - const newCommit = await folderCommitDAL.create( { actorMetadata: metadata, @@ -824,6 +809,21 @@ export const folderCommitServiceFactory = ({ }) ); + await Promise.all( + data.changes.map(async (change) => { + if (change.type === ChangeType.DELETE && change.folderId) { + await createDeleteCommitForNestedFolders({ + folderId: change.folderId, + actorMetadata: metadata, + actorType: data.actor.type, + envId: folder.envId, + parentFolderName: folder.name, + tx + }); + } + }) + ); + await createFolderCheckpoint({ folderId: data.folderId, folderCommitId: newCommit.id, tx }); if (folderCommitQueueService) { if (!folder.parentId) { @@ -1640,7 +1640,6 @@ export const folderCommitServiceFactory = ({ changes: diff, folderPath: folderPath || "" }); - await Promise.all( diff.map(async (change) => { if (change.type === ResourceType.FOLDER && change.changeType === ChangeType.CREATE) {