From 3c49b05694cdd08b8ba6120b2b716ed6800d6e74 Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Fri, 20 Jan 2012 09:15:40 +0000
Subject: [PATCH] LMS-2739 Better logic for deleting the generated prestaging
 folders.

SVN: 24240
---
 ...stractOmniscientTopLevelDataSetRegistrator.java | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 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 d3bf4678ee6..0b63752a887 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
@@ -226,17 +226,23 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat
         @Override
         public Boolean execute(boolean didOperationSucceed)
         {
-            File fileToDelete = null;
+            boolean deleteSucceeded = false;
             if (didOperationSucceed)
             {
                 // Registration succeeded -- no need to keep the original file around
-                fileToDelete = originalInboxFile;
+                deleteSucceeded = FileUtilities.deleteRecursively(originalInboxFile);
+                // If the parent of the hardlink copy file, which we generated, is empty, delete it
+                // too
+                File hardlinkCopyParent = hardlinkCopyFile.getParentFile();
+                if (hardlinkCopyParent.list().length < 1)
+                {
+                    hardlinkCopyParent.delete();
+                }
             } else
             {
                 // Registration failed -- remove the copy, leaving the original.
-                fileToDelete = hardlinkCopyFile;
+                deleteSucceeded = FileUtilities.deleteRecursively(hardlinkCopyFile);
             }
-            boolean deleteSucceeded = FileUtilities.deleteRecursively(fileToDelete);
             boolean wrappedActionResult = wrappedAction.execute(didOperationSucceed);
 
             return deleteSucceeded && wrappedActionResult;
-- 
GitLab