From 28a3bf0b94e03cb81257b5405e153ded2fe6775e Mon Sep 17 00:00:00 2001 From: carlosmonastyrski Date: Fri, 23 May 2025 10:59:05 -0300 Subject: [PATCH] Improvement on createCommit function to add changes in batches --- .../folder-commit/folder-commit-service.ts | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/backend/src/services/folder-commit/folder-commit-service.ts b/backend/src/services/folder-commit/folder-commit-service.ts index fb78bf6f1..5e2283b76 100644 --- a/backend/src/services/folder-commit/folder-commit-service.ts +++ b/backend/src/services/folder-commit/folder-commit-service.ts @@ -7,6 +7,7 @@ import { TPermissionServiceFactory } from "@app/ee/services/permission/permissio import { ProjectPermissionCommitsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { getConfig } from "@app/lib/config/env"; import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; +import { chunkArray } from "@app/lib/fn"; import { logger } from "@app/lib/logger"; import { ActorAuthMethod, ActorType } from "../auth/auth-type"; @@ -590,15 +591,22 @@ export const folderCommitServiceFactory = ({ tx ); - await folderCommitChangesDAL.insertMany( - data.changes.map((change) => ({ - folderCommitId: newCommit.id, - changeType: change.type, - secretVersionId: change.secretVersionId, - folderVersionId: change.folderVersionId, - isUpdate: change.isUpdate || false - })), - tx + const batchSize = 500; + const chunks = chunkArray(data.changes, batchSize); + + await Promise.all( + chunks.map(async (chunk) => { + await folderCommitChangesDAL.insertMany( + chunk.map((change) => ({ + folderCommitId: newCommit.id, + changeType: change.type, + secretVersionId: change.secretVersionId, + folderVersionId: change.folderVersionId, + isUpdate: change.isUpdate || false + })), + tx + ); + }) ); await createFolderCheckpoint({ folderId: data.folderId, folderCommitId: newCommit.id, tx });