RED-9272: increase storageToMongoDb performance
This commit is contained in:
parent
29d2a911c6
commit
a7a965a831
@ -49,8 +49,9 @@ public class StorageToMongoCopyService {
|
|||||||
log.info("Reading dossier {} file {} from storage", dossierFile.dossierId, dossierFile.fileId);
|
log.info("Reading dossier {} file {} from storage", dossierFile.dossierId, dossierFile.fileId);
|
||||||
Optional<EntityLog> entityLogFromStorage = getEntityLogFromStorageForMigration(dossierFile.dossierId, dossierFile.fileId);
|
Optional<EntityLog> entityLogFromStorage = getEntityLogFromStorageForMigration(dossierFile.dossierId, dossierFile.fileId);
|
||||||
if (entityLogFromStorage.isPresent()) {
|
if (entityLogFromStorage.isPresent()) {
|
||||||
log.info("File found, now saving in mongodb");
|
log.info("File found, now saving in mongodb");
|
||||||
fileManagementStorageService.saveEntityLog(dossierFile.dossierId, dossierFile.fileId, entityLogFromStorage.get());
|
fileManagementStorageService.deleteEntityLog(dossierFile.dossierId, dossierFile.fileId);
|
||||||
|
fileManagementStorageService.insertEntityLog(dossierFile.dossierId, dossierFile.fileId, entityLogFromStorage.get());
|
||||||
log.info("Deleting old file from storage");
|
log.info("Deleting old file from storage");
|
||||||
fileManagementStorageService.storeJSONObject(dossierFile.dossierId, dossierFile.fileId, FileType.ENTITY_LOG_BAK, entityLogFromStorage.get());
|
fileManagementStorageService.storeJSONObject(dossierFile.dossierId, dossierFile.fileId, FileType.ENTITY_LOG_BAK, entityLogFromStorage.get());
|
||||||
fileManagementStorageService.deleteObject(dossierFile.dossierId, dossierFile.fileId, FileType.ENTITY_LOG);
|
fileManagementStorageService.deleteObject(dossierFile.dossierId, dossierFile.fileId, FileType.ENTITY_LOG);
|
||||||
|
|||||||
@ -145,6 +145,12 @@ public class FileManagementStorageService {
|
|||||||
entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog);
|
entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) {
|
||||||
|
|
||||||
|
entityLogMongoService.insertEntityLog(dossierId, fileId, entityLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void saveComponentLog(String dossierId, String fileId, ComponentLog componentLog) {
|
public void saveComponentLog(String dossierId, String fileId, ComponentLog componentLog) {
|
||||||
|
|||||||
@ -0,0 +1,84 @@
|
|||||||
|
package com.iqser.red.service.peristence.v1.server.integration.tests.performance;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.migration.StorageToMongoCopyService;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService;
|
||||||
|
import com.iqser.red.storage.commons.service.StorageService;
|
||||||
|
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||||
|
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
@Disabled
|
||||||
|
public class StorageToMongoDBPerformanceTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
|
public static final int NUMBER_OF_FILES = 10;
|
||||||
|
@Autowired
|
||||||
|
private StorageToMongoCopyService storageToMongoCopyService;
|
||||||
|
@Autowired
|
||||||
|
private StorageService storageService;
|
||||||
|
@Autowired
|
||||||
|
private FileTesterAndProvider fileTesterAndProvider;
|
||||||
|
@Autowired
|
||||||
|
private DossierTesterAndProvider dossierTesterAndProvider;
|
||||||
|
@Autowired
|
||||||
|
private EntityLogMongoService entityLogMongoService;
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
@SneakyThrows
|
||||||
|
public void setUp() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@SneakyThrows
|
||||||
|
public void testSavePerformance() {
|
||||||
|
|
||||||
|
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||||
|
LinkedList<CompletableFuture<Void>> futures = new LinkedList<>();
|
||||||
|
for (int i = 0; i < NUMBER_OF_FILES; i++) {
|
||||||
|
int number = i;
|
||||||
|
futures.add(CompletableFuture.supplyAsync(() -> {
|
||||||
|
prepStorageForFile(dossier, number);
|
||||||
|
return null;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
futures.forEach(CompletableFuture::join);
|
||||||
|
TenantContext.setTenantId(TENANT_1);
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
storageToMongoCopyService.copy();
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
System.out.println("Saving of" + NUMBER_OF_FILES + " files took " + (end - start) + "ms");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
private void prepStorageForFile(Dossier dossier, int i) {
|
||||||
|
|
||||||
|
TenantContext.setTenantId(TENANT_1);
|
||||||
|
|
||||||
|
var file = fileTesterAndProvider.testAndProvideFile(dossier, "file" + i);
|
||||||
|
try (var in = new FileInputStream("/home/kschuettler/Dokumente/TestFiles/entitylogs/largeEntitylog.json")) {
|
||||||
|
storageService.storeObject(TENANT_1, StorageIdUtils.getStorageId(dossier.getId(), file.getId(), FileType.ENTITY_LOG), in);
|
||||||
|
}
|
||||||
|
entityLogMongoService.deleteEntityLog(dossier.getId(), file.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user