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 0b63752a88713d8b6d67ac1ec33a43d0a30dc8f8..2960646bbdb1ed16bd16b43b3df0e31962302286 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 @@ -207,7 +207,8 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat * * @author Chandrasekhar Ramakrishnan */ - public static class PostRegistrationCleanUpAction extends AbstractDelegatedActionWithResult<Boolean> + public static class PostRegistrationCleanUpAction extends + AbstractDelegatedActionWithResult<Boolean> { private final File originalInboxFile; @@ -215,7 +216,8 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat private final IDelegatedActionWithResult<Boolean> wrappedAction; - public PostRegistrationCleanUpAction(File originalInboxFile, File hardlinkCopyFile, IDelegatedActionWithResult<Boolean> wrappedAction) + public PostRegistrationCleanUpAction(File originalInboxFile, File hardlinkCopyFile, + IDelegatedActionWithResult<Boolean> wrappedAction) { super(true); this.originalInboxFile = originalInboxFile; @@ -336,13 +338,21 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat { incomingDataSetFile = state.getMarkerFileUtility().getIncomingDataSetPathFromMarker(isFinishedFile); - markerFileCleanupAction = new AbstractDelegatedActionWithResult<Boolean>(false) + markerFileCleanupAction = new IDelegatedActionWithResult<Boolean>() { @Override - public Boolean execute() + public Boolean execute(boolean didOperationSucceed) { - return state.getMarkerFileUtility().deleteAndLogIsFinishedMarkerFile( - isFinishedFile); + boolean markerDeleteSucceeded = + state.getMarkerFileUtility().deleteAndLogIsFinishedMarkerFile( + isFinishedFile); + + if (didOperationSucceed) + { + return markerDeleteSucceeded + && FileUtilities.deleteRecursively(incomingDataSetFile); + } + return markerDeleteSucceeded; } }; } else @@ -356,7 +366,9 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat // Make a hardlink copy of the file File copyOfIncoming = copyIncomingFileToPreStaging(incomingDataSetFile); - PostRegistrationCleanUpAction cleanupAction = new PostRegistrationCleanUpAction(incomingDataSetFile, copyOfIncoming, markerFileCleanupAction); + PostRegistrationCleanUpAction cleanupAction = + new PostRegistrationCleanUpAction(incomingDataSetFile, copyOfIncoming, + markerFileCleanupAction); handle(copyOfIncoming, null, new NoOpDelegate(), cleanupAction); } else @@ -369,7 +381,9 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat { TopLevelDataSetRegistratorGlobalState globalState = state.getGlobalState(); File preStagingRootDir = globalState.getPreStagingDir(); - String incomingDirName = new DssUniqueFilenameGenerator(globalState.getThreadParameters().getThreadName(), incomingDataSetFile.getName(), null).generateFilename(); + String incomingDirName = + new DssUniqueFilenameGenerator(globalState.getThreadParameters().getThreadName(), + incomingDataSetFile.getName(), null).generateFilename(); File preStagingDir = new File(preStagingRootDir, incomingDirName); preStagingDir.mkdir();