From 6191ef7c5c48a0b005f26023f86d2ad5136c732d Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Fri, 14 Oct 2011 16:25:56 +0000 Subject: [PATCH] [LMS-2598] staging dir must be deleted after commit, test fixed SVN: 23332 --- .../registrator/DataSetStorageAlgorithm.java | 18 +++++++++++++++--- .../DataSetStorageAlgorithmRunner.java | 1 - .../AbstractJythonDataSetHandlerTest.java | 10 +++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) 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 6ae10a5abb1..8b5f8081d21 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 @@ -207,7 +207,7 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> } StoredState<T> storedState = (StoredState<T>) state; - storedState.cleanUp(); + storedState.cleanUpMarkerFile(); state = new RolledbackState<T>(storedState, UnstoreDataAction.LEAVE_UNTOUCHED, throwable); } @@ -501,12 +501,15 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> protected final File markerFile; + protected final BaseDirectoryHolder stagingBaseDirectoryHolder; + protected final File storedDirectory; public StoredState(PreparedState<T> oldState) { super(oldState.storageAlgorithm); this.transaction = oldState.transaction; + this.stagingBaseDirectoryHolder = oldState.stagingBaseDirectoryHolder; this.markerFile = oldState.markerFile; this.storedDirectory = oldState.storedDirectory; } @@ -518,7 +521,7 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> { transaction.setStoredDataDirectory(storedDirectory); transaction.commit(); - cleanUp(); + cleanUpMarkerFile(); } /** @@ -532,7 +535,7 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> /** * Cleanup from the processing -- done after a commit or rollback */ - private void cleanUp() + private void cleanUpMarkerFile() { getFileOperations().delete(markerFile); } @@ -542,9 +545,18 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> DataSetStorageAlgorithmState<T> { + protected final File stagingDirectory; + CommittedState(StoredState<T> oldState) { super(oldState.storageAlgorithm); + this.stagingDirectory = oldState.stagingBaseDirectoryHolder.getBaseDirectory(); + cleanUpStagingDirectory(); + } + + private void cleanUpStagingDirectory() + { + getFileOperations().delete(stagingDirectory); } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java index 472cdbcc82a..bab3be9dcdf 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java @@ -137,7 +137,6 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> public void rollback() { - // execute rollback after server restart transaction.rollback(null); } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java index 7b42518394d..6719a9a2220 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/AbstractJythonDataSetHandlerTest.java @@ -39,6 +39,7 @@ import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.common.filesystem.FileOperations; import ch.systemsx.cisd.common.filesystem.QueueingPathRemoverService; import ch.systemsx.cisd.common.mail.IMailClient; import ch.systemsx.cisd.common.utilities.ExtendedProperties; @@ -289,13 +290,16 @@ public abstract class AbstractJythonDataSetHandlerTest extends AbstractFileSyste StorageProcessorTransactionParameters parameters) { final File rootDir = parameters.getRootDir(); + final File incomingDir = parameters.getIncomingDataSetDirectory(); dataSetInfoString = parameters.getDataSetInformation().toString(); return new IStorageProcessorTransaction() { private static final long serialVersionUID = 1L; - private File storedFolder; + private File incoming = incomingDir; + + private File storedFolder = rootDir; public void storeData(ITypeExtractor typeExtractor, IMailClient mailClient, File incomingDataSetFile) @@ -321,6 +325,10 @@ public abstract class AbstractJythonDataSetHandlerTest extends AbstractFileSyste public UnstoreDataAction rollback(Throwable exception) { + if (storedFolder != null && storedFolder.exists()) + { + FileOperations.getInstance().move(storedFolder, incoming); + } return null; } -- GitLab