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 cb044d7cb8717675f2e13696ca73be64240a6b99..61da40fc4c23097c3dfc768350947f6d019edabc 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 @@ -332,6 +332,7 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat { incomingDataSetFile = state.getMarkerFileUtility().getIncomingDataSetPathFromMarker(isFinishedFile); + markerFileCleanupAction = new IDelegatedActionWithResult<Boolean>() { public Boolean execute(boolean didOperationSucceed) @@ -348,21 +349,24 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat markerFileCleanupAction = new DoNothingDelegatedAction(); } + //read from configuration prestaging parameter. DataSetRegistrationPreStagingBehavior preStagingUsage = state.getGlobalState().getThreadParameters() .getDataSetRegistrationPreStagingBehavior(); + if (preStagingUsage == DataSetRegistrationPreStagingBehavior.USE_ORIGINAL) { DataSetFile incoming = new DataSetFile(incomingDataSetFile); handle(incoming, null, new NoOpDelegate(), markerFileCleanupAction); } else { - // Make a hardlink copy of the file + // If we should the prestaging phase, we make a hardlink copy in prestaging area File copyOfIncoming = copyIncomingFileToPreStaging(incomingDataSetFile); DataSetFile dsf = new DataSetFile(incomingDataSetFile, copyOfIncoming); + // For cleanup we use the postRegistrationCleanUpAction wich clears the prestaging area. PostRegistrationCleanUpAction cleanupAction = new PostRegistrationCleanUpAction(dsf, markerFileCleanupAction); handle(dsf, null, new NoOpDelegate(), cleanupAction); 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 d0ad641687773f79d2de0491c0aa3b08995a51a4..9b453efdb2082d92371f2d86341b98394cda1c9d 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 @@ -440,10 +440,10 @@ public class DataSetStorageAlgorithm<T extends DataSetInformation> transactionStoreData(); - moveFilesFromStagingToStore(); + moveFilesFromStagingToPrecommit(); } - private void moveFilesFromStagingToStore() + private void moveFilesFromStagingToPrecommit() { File stagedStoredDataDirectory = transaction.getStoredDataDirectory(); assert stagedStoredDataDirectory != null : "The folder that contains the stored data should not be null."; 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 176e24b6b867a94527634b2a79f5a0d36159e3b4..be3f96be55802102edd3a4282297fdc526f03060 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 @@ -237,12 +237,7 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> try { - for (DataSetStorageAlgorithm<T> storageAlgorithm : dataSetStorageAlgorithms) - { - String dataSetCode = storageAlgorithm.getDataSetInformation() - .getDataSetCode(); - openBISService.setStorageConfirmed(dataSetCode); - } + confirmStorageInApplicationServer(); dssRegistrationLog.log("Storage has been confirmed in openBIS Application Server."); } catch (final Exception ex) @@ -262,6 +257,16 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> } + private void confirmStorageInApplicationServer() + { + for (DataSetStorageAlgorithm<T> storageAlgorithm : dataSetStorageAlgorithms) + { + String dataSetCode = storageAlgorithm.getDataSetInformation() + .getDataSetCode(); + openBISService.setStorageConfirmed(dataSetCode); + } + } + private void logPreCommitMessage() { // Use the precommit folder to create an informative message