diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
index f2676ff04b2337c2c766d5c98b1535395b7c0abb..f712acc6d88b5bdd8799691094a3cdc94fb05a59 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
@@ -443,16 +443,20 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
             {
                 registrationService.queueDataSetRegistration(dataSet.getDataSetContents(),
                         dataSet.getRegistrationDetails());
-
-                // File contents = dataSet.getDataSetContents();
-                // DataSetRegistrationDetails<T> details = dataSet.getRegistrationDetails();
-                // registrationService.getRegistratorState().getDataStrategyStore()
-                // .getDataStoreStrategy(details.getDataSetInformation(), contents);
-                // DataSetStorageAlgorithm<T> algorithm =
-                // new DataSetStorageAlgorithm<T>(contents, details, null, null, null, null, null,
-                // null);
             }
             registrationService.commit();
+
+            // for (DataSet<T> dataSet : registeredDataSets)
+            // {
+            // File contents = dataSet.getDataSetContents();
+            // DataSetRegistrationDetails<T> details = dataSet.getRegistrationDetails();
+            // registrationService.getRegistratorState().getDataStrategyStore()
+            // .getDataStoreStrategy(details.getDataSetInformation(), contents);
+            // DataSetStorageAlgorithm<T> algorithm =
+            // new DataSetStorageAlgorithm<T>(contents, details, null, null, null, null,
+            // null, null);
+            // }
+            // registrationService.commit();
         }
 
         /**
@@ -506,6 +510,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
         {
             this.liveState = liveState;
             deleteStagingFolders();
+            this.liveState.rollbackStack.discard();
         }
 
         private void deleteStagingFolders()
@@ -515,6 +520,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
                 dataSet.getDataSetStagingFolder().delete();
             }
         }
+
     }
 
     private static class CommitedTransactionState<T extends DataSetInformation> extends
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
index 418e8d253660ca64d4032184cacdb814a7fbecdb..d1f4e047c910503614ba3f1ae93e5dd8878ede8c 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
@@ -214,7 +214,9 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
         context.assertIsSatisfied();
     }
 
-    @Test
+    // The second invocation of rollback will cause a class-cast exception.
+    @Test(expectedExceptions =
+        { ClassCastException.class })
     public void testDoubleRollbackNormal()
     {
         setUpOpenBisExpectations(false);