diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java index 6811f614b8e93314e8e707f57e14e93982b1cb3e..d2972f767bdf4f96db423a50ad81ec49b86ff570 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java @@ -328,4 +328,9 @@ public class SyncConfig { this.parallelizedExecutionPrefs = new ParallelizedExecutionPreferences(machineLoad, maxThreads, retriesOnFailure, stopOnFailure); } + + public ParallelizedExecutionPreferences getParallelizedExecutionPrefs() + { + return parallelizedExecutionPrefs; + } } diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java index 0754b1b2d5e76929f2a5e4db320ba6553e6adb4b..76c95d810dfae5764be0929ace774f3488a9175f 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java @@ -64,6 +64,7 @@ import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.EntityRetrieve import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.SyncEntityKind; import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.entitygraph.EntityGraph; import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.entitygraph.Node; +import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.config.ParallelizedExecutionPreferences; import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.config.SyncConfig; import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchronizer.ResourceListParserData.Connection; import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchronizer.ResourceListParserData.IncomingDataSet; @@ -444,10 +445,13 @@ public class EntitySynchronizer { AttachmentSynchronizationSummary synchronizationSummary = new AttachmentSynchronizationSummary(); + ParallelizedExecutionPreferences preferences = config.getParallelizedExecutionPrefs(); + ParallelizedExecutor.process(attachmentHoldersToProcess, new AttachmentSynchronizationTaskExecutor(synchronizationSummary, service, lastSyncTimestamp, config), - 0.5, 10, "process attachments", 0, false); + preferences.getMachineLoad(), preferences.getMaxThreads(), "process attachments", preferences.getRetriesOnFail(), + preferences.isStopOnFailure()); return synchronizationSummary; } @@ -623,14 +627,17 @@ public class EntitySynchronizer private DataSetSynchronizationSummary registerPhysicalDataSets(Map<String, IncomingDataSet> physicalDSMap) throws IOException { List<IncomingDataSet> dsList = new ArrayList<IncomingDataSet>(physicalDSMap.values()); - DataSetSynchronizationSummary dsRegistrationSummary = new DataSetSynchronizationSummary(); + DataSetSynchronizationSummary dataSetSynchronizationSummary = new DataSetSynchronizationSummary(); // This parallelization is possible because each DS is registered without dependencies // and the dependencies are established later on in the sync process. - ParallelizedExecutor.process(dsList, new DataSetRegistrationTaskExecutor(dsRegistrationSummary), - 0.5, 10, "register data sets", 0, false); + ParallelizedExecutionPreferences preferences = config.getParallelizedExecutionPrefs(); + + ParallelizedExecutor.process(dsList, new DataSetRegistrationTaskExecutor(dataSetSynchronizationSummary), + preferences.getMachineLoad(), preferences.getMaxThreads(), "register data sets", preferences.getRetriesOnFail(), + preferences.isStopOnFailure()); - return dsRegistrationSummary; + return dataSetSynchronizationSummary; } private void saveFailedEntitiesFile(List<String> notRegisteredDataSetCodes, List<String> notSyncedAttachmentsHolders) throws IOException