diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java index 5cae0002ad70abf93311c0b0f0ebb67da28f857f..6654248f8af820d8a96ece9949d2afc8646d133c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java @@ -120,8 +120,8 @@ abstract class AbstractTransactionState<T extends DataSetInformation> private final List<Material> materialsToBeRegistered = new ArrayList<Material>(); - private final List<DynamicTransactionQuery> queriesToCommit = - new ArrayList<DynamicTransactionQuery>(); + private final Map<String, DynamicTransactionQuery> queriesToCommit = + new HashMap<String, DynamicTransactionQuery>(); private String userIdOrNull = null; @@ -441,8 +441,12 @@ abstract class AbstractTransactionState<T extends DataSetInformation> public DynamicTransactionQuery getDatabaseQuery(String dataSourceName) { - DynamicTransactionQuery query = QueryTool.getQuery(DynamicTransactionQuery.class); - queriesToCommit.add(query); + DynamicTransactionQuery query = queriesToCommit.get(dataSourceName); + if (null == query) + { + query = QueryTool.getQuery(DynamicTransactionQuery.class); + queriesToCommit.put(dataSourceName, query); + } return query; } @@ -480,7 +484,7 @@ abstract class AbstractTransactionState<T extends DataSetInformation> DataSetStorageAlgorithmRunner<T> runner = new DataSetStorageAlgorithmRunner<T>(algorithms, parent, parent); List<DataSetInformation> datasets = runner.prepareAndRunStorageAlgorithms(); - for (DynamicTransactionQuery query : queriesToCommit) + for (DynamicTransactionQuery query : queriesToCommit.values()) { query.commit(); query.close(false); @@ -497,7 +501,7 @@ abstract class AbstractTransactionState<T extends DataSetInformation> { rollbackStack.rollbackAll(); registeredDataSets.clear(); - for (DynamicTransactionQuery query : queriesToCommit) + for (DynamicTransactionQuery query : queriesToCommit.values()) { query.rollback(); query.close(false);