diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java index bc314511fd1b511cc2c3a71df43cbbfb0d14dd85..3d903f6835a9ad0930d800db38fbaac6af5f8598 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java @@ -486,12 +486,15 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat // TODO: real cleanup action + final File recoveryFile = state.getGlobalState().getStorageRecoveryManager().getRecoveryFileFromMarker(recoveryMarkerFile); + IDelegatedActionWithResult<Boolean> recoveryMarkerFileCleanupAction = new IDelegatedActionWithResult<Boolean>() { public Boolean execute(boolean didOperationSucceed) { recoveryMarkerFile.delete(); + recoveryFile.delete(); return true; } }; 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 75d4bf32c8264be9c4e293b1471e53b3e0b29c56..245dd7dd035eb534d5951077089a39c0f3b1707e 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 @@ -64,13 +64,19 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan return new File(dropboxRecoveryStateDir, incomingFileName + PRECOMMIT_SERIALIZED); } + public File getRecoveryFileFromMarker(File markerFile) + { + // trim is necessary as it reads the \n at the end of the file + String recoveryFilePath = FileUtilities.loadToString(markerFile).trim(); + return new File(recoveryFilePath); + } + @SuppressWarnings("unchecked") public <T extends DataSetInformation> DataSetStoragePrecommitRecoveryState<T> extractPrecommittedCheckpoint( File markerFile) { - // trim is necessary as it reads the \n at the end of the file - String recoveryFilePath = FileUtilities.loadToString(markerFile).trim(); - return FileUtilities.loadToObject(new File(recoveryFilePath), + File recoveryFile = getRecoveryFileFromMarker(markerFile); + return FileUtilities.loadToObject(recoveryFile, DataSetStoragePrecommitRecoveryState.class); } 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 9b8d683600364e39cd251411caba64d04e5e57f3..44d2fe431855cde5d1cadc400edf2e08cf1cfbe8 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 @@ -50,9 +50,17 @@ public interface IDataSetStorageRecoveryManager <T extends DataSetInformation> DataSetStoragePrecommitRecoveryState<T> extractPrecommittedCheckpoint( File markerFile); + /** + * Extracts the recovery file from the marker file + */ + File getRecoveryFileFromMarker(File markerFile); + // Simple helper methods boolean canRecoverFromError(Throwable ex); + /** + * checks whether the file is a proper recovery marker file + */ boolean isRecoveryFile(File file); void setDropboxRecoveryStateDir(File dropboxRecoveryStateDir);