From 25a1b2ec929dd30612931eea19b3a6d4537e5b55 Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Fri, 11 May 2012 15:39:39 +0000
Subject: [PATCH] BIS-21 cleanup the recovery files

SVN: 25242
---
 ...AbstractOmniscientTopLevelDataSetRegistrator.java |  3 +++
 .../registrator/DataSetStorageRecoveryManager.java   | 12 +++++++++---
 .../registrator/IDataSetStorageRecoveryManager.java  |  8 ++++++++
 3 files changed, 20 insertions(+), 3 deletions(-)

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 bc314511fd1..3d903f6835a 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 75d4bf32c82..245dd7dd035 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 9b8d6836003..44d2fe43185 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);
-- 
GitLab