diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java index b0bd6e575acfdf06e7dea2c36e6855b6736eb44e..0144a00d43749adbf965fb287bdca4caa611279b 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java @@ -154,6 +154,7 @@ public class TopLevelDataSetRegistratorGlobalState this.storageRecoveryManager = storageRecoveryManager; this.storageRecoveryManager.setDropboxRecoveryStateDir(dropboxRecoveryStateDir); this.storageRecoveryManager.setRecoveryMarkerFilesDir(recoveryMarkerFilesDirectory); + this.storageRecoveryManager.setMaximumRertyCount(getMaximumRecoveryCount(threadParameters.getThreadProperties())); // Initialize the DSS Registration Log Directory new DssRegistrationLogDirectoryHelper(dssRegistrationLogDir).initializeSubdirectories(); @@ -305,6 +306,8 @@ public class TopLevelDataSetRegistratorGlobalState public static final String PRE_COMMIT_DIR = "pre-commit-dir"; public static final String RECOVERY_MARKER_DIR = "recovery-marker-dir"; + + public static final String RECOVERY_MAX_RETRY_COUNT = "recovery-max-retry-count"; private static File getStagingDir(File storeRoot, String shareId, Properties threadProperties) { @@ -329,6 +332,11 @@ public class TopLevelDataSetRegistratorGlobalState "recovery-marker"); } + private static int getMaximumRecoveryCount(Properties threadProperties) + { + return PropertyUtils.getInt(threadProperties, RECOVERY_MAX_RETRY_COUNT, 50); + } + /** * Get a directory local to the share, respecting the user override, if one is specified, and * defaulting to the defaultDirName. diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRecoveryManager.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRecoveryManager.java index a9e32fcda60e4dc569281b2d107f63920620c96c..9ab0479c1f45a537cb8ccfe91e7baa0cc95c5fda 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRecoveryManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRecoveryManager.java @@ -44,7 +44,9 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan private File dropboxRecoveryStateDir; private File recoveryMarkerFilesDir; - + + private int maxRetryCount = 50; + public <T extends DataSetInformation> void checkpointPrecommittedState( DataSetStorageAlgorithmRunner<T> runner) { @@ -150,4 +152,13 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan this.recoveryMarkerFilesDir = recoveryMarkerFileDir; } + public void setMaximumRertyCount(int maxRetryCount) + { + this.maxRetryCount = maxRetryCount; + } + + public int getMaximumRertyCount() + { + return this.maxRetryCount; + } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/IDataSetStorageRecoveryManager.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/IDataSetStorageRecoveryManager.java index c95b94d47c87afd4d3a592f3f8092048bac63f6a..238d5d4246d459db68ac019afcaba3cbf130f8b6 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/IDataSetStorageRecoveryManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/IDataSetStorageRecoveryManager.java @@ -70,4 +70,8 @@ public interface IDataSetStorageRecoveryManager void setDropboxRecoveryStateDir(File dropboxRecoveryStateDir); void setRecoveryMarkerFilesDir(File recoveryMarkerFileDir); + + int getMaximumRertyCount(); + + void setMaximumRertyCount(int maxRetryCount); } \ No newline at end of file diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java index d69a12583b4a8f9acee70629894d88fa0d37c9f6..9480f5a195f1a4c235ec565038052a24079fd0cf 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java @@ -213,6 +213,7 @@ public abstract class AbstractJythonDataSetHandlerTest extends AbstractFileSyste new File(workingDirectory, "jython-handler-test")); one(storageRecoveryManager).setRecoveryMarkerFilesDir(new File( new File(workingDirectory, "recovery-marker"), "jython-handler-test")); + one(storageRecoveryManager).setMaximumRertyCount(with(any(Integer.class))); } }); }