From c26ce92326811644977aba4bd0aa5d2921c47c07 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Thu, 10 Feb 2011 14:03:33 +0000
Subject: [PATCH] LMS-2033 bugfix from Sekhar: rollback in the right order

SVN: 19876
---
 .../etlserver/registrator/DataSetStorageAlgorithmRunner.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 7cb63dba030..064b62ddb19 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)
-- 
GitLab