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 7cb63dba030f2aaffea48922ee9cb9cb60286372..064b62ddb19d93c785ebe05e3bc9246cb6ea0706 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 @@ -226,8 +226,10 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> // Don't rollback when this exception happens boolean stopped = ex instanceof InterruptedExceptionUnchecked; - for (DataSetStorageAlgorithm<T> storageAlgorithm : dataSetStorageAlgorithms) + // Rollback in the reverse order + for (int i = dataSetStorageAlgorithms.size() - 1; i >= 0; --i) { + DataSetStorageAlgorithm<T> storageAlgorithm = dataSetStorageAlgorithms.get(i); storageAlgorithm.rollbackStorageProcessor(ex); if (stopped == false)