From 698ae74aa9f661cd95c171244745eb2a89c75f67 Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Tue, 25 Oct 2011 09:06:00 +0000
Subject: [PATCH] - add logging when deletion of staging dir/marker file fails.
 - log an error when the rollback of a MkdirsCommand and NewFileCommand fails
 to delete the underlying file

SVN: 23407
---
 .../registrator/DataSetStorageAlgorithm.java         |  9 +++++++++
 .../registrator/api/v1/impl/MkdirsCommand.java       | 11 +++++++++++
 .../registrator/api/v1/impl/NewFileCommand.java      | 12 ++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithm.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithm.java
index 8b5f8081d21..aea643a8405 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithm.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithm.java
@@ -538,6 +538,10 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation>
         private void cleanUpMarkerFile()
         {
             getFileOperations().delete(markerFile);
+            if (markerFile.exists())
+            {
+                operationLog.error("Marker file '" + markerFile + "' could not be deleted.");
+            }
         }
     }
 
@@ -557,6 +561,11 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation>
         private void cleanUpStagingDirectory()
         {
             getFileOperations().delete(stagingDirectory);
+            if (stagingDirectory.exists())
+            {
+                operationLog.error("Staging directory '" + stagingDirectory
+                        + "' could not be deleted.");
+            }
         }
 
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/MkdirsCommand.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/MkdirsCommand.java
index 762979ba0e3..31f89f96a6a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/MkdirsCommand.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/MkdirsCommand.java
@@ -18,8 +18,12 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
 
 import java.io.File;
 
+import org.apache.log4j.Logger;
+
 import ch.systemsx.cisd.common.filesystem.FileOperations;
 import ch.systemsx.cisd.common.filesystem.IFileOperations;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
 
 /**
  * Creates a directory and all necessary intermediate dirctories.
@@ -30,6 +34,9 @@ public class MkdirsCommand extends AbstractTransactionalCommand
 {
     private static final long serialVersionUID = 1L;
 
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
+            MkdirsCommand.class);
+
     private final String directoryAbsoutePath;
 
     public MkdirsCommand(String directoryAbsoutePath)
@@ -58,6 +65,10 @@ public class MkdirsCommand extends AbstractTransactionalCommand
 
         IFileOperations fileOperations = FileOperations.getMonitoredInstanceForCurrentThread();
         fileOperations.delete(src);
+        if (src.exists())
+        {
+            operationLog.error("Could not delete directory '" + src + "'.");
+        }
     }
 
     @Override
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/NewFileCommand.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/NewFileCommand.java
index 1095c407a34..6949c02ee45 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/NewFileCommand.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/NewFileCommand.java
@@ -18,8 +18,12 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
 
 import java.io.File;
 
+import org.apache.log4j.Logger;
+
 import ch.systemsx.cisd.common.filesystem.FileOperations;
 import ch.systemsx.cisd.common.filesystem.IFileOperations;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
 
 /**
  * Creates a directory and all necessary intermediate dirctories.
@@ -30,6 +34,9 @@ public class NewFileCommand extends AbstractTransactionalCommand
 {
     private static final long serialVersionUID = 1L;
 
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
+            NewFileCommand.class);
+
     private final String fileAbsolutePath;
 
     public NewFileCommand(String directoryAbsoutePath)
@@ -58,6 +65,11 @@ public class NewFileCommand extends AbstractTransactionalCommand
 
         IFileOperations fileOperations = FileOperations.getMonitoredInstanceForCurrentThread();
         fileOperations.delete(src);
+        if (src.exists())
+        {
+            operationLog.error("Could not delete file '" + src + "'.");
+        }
+
     }
 
     @Override
-- 
GitLab