You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/09/05 15:04:35 UTC

[1/5] cayenne git commit: CAY-2111 Unbind transaction object from the current thread for iterated queries

Repository: cayenne
Updated Branches:
  refs/heads/master 03b0d270d -> 5838101e5


CAY-2111 Unbind transaction object from the current thread for iterated queries


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/d8e5afec
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/d8e5afec
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/d8e5afec

Branch: refs/heads/master
Commit: d8e5afec9236bfdda3469ba0eb69e33d8fa28a62
Parents: 03b0d27
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Sep 5 14:28:37 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Sep 5 14:37:00 2016 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/access/DataContext.java  | 24 ++++++++++++--------
 .../TransactionResultIteratorDecorator.java     | 13 ++++-------
 .../access/DataContextIteratedQueryIT.java      | 13 +++++++++++
 3 files changed, 32 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/d8e5afec/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
index 05186ab..a88ed6b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -874,14 +874,16 @@ public class DataContext extends BaseContext {
     // interface
     @SuppressWarnings({ "rawtypes" })
     public ResultIterator performIteratedQuery(Query query) {
-        // TODO: use 4.0 TransactionManager
+
         if (BaseTransaction.getThreadTransaction() != null) {
             return internalPerformIteratedQuery(query);
         } else {
 
+
+            // can't use TransactionManger here as it would attempt to commit the transaction at the end...
+
             // manually manage a transaction, so that a ResultIterator wrapper
-            // could close
-            // it when it is done.
+            // could close it when it is done.
             Transaction tx = getTransactionFactory().createTransaction();
             BaseTransaction.bindThreadTransaction(tx);
 
@@ -889,15 +891,19 @@ public class DataContext extends BaseContext {
             try {
                 result = internalPerformIteratedQuery(query);
             } catch (Exception e) {
-                BaseTransaction.bindThreadTransaction(null);
+
                 tx.setRollbackOnly();
                 throw new CayenneRuntimeException(e);
             } finally {
-                // note: we are keeping the transaction bound to the current
-                // thread on
-                // success - iterator will unbind it. Unsetting a transaction
-                // here would
-                // result in some strangeness, at least on Ingres
+
+                // unbind thread tx before returning to the caller. Transaction will be managed internally by the
+                // ResultIterator and should not get in the way of other DB operations that may be performed
+                // within the iterator....
+
+                // TODO: there was an older comment about Ingres breaking when we unbind thread transaction
+                // before closing the iterator. As we have no test environment for ingres, we can't
+                // confirm this here...
+                BaseTransaction.bindThreadTransaction(null);
 
                 if (tx.isRollbackOnly()) {
                     try {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/d8e5afec/cayenne-server/src/main/java/org/apache/cayenne/access/TransactionResultIteratorDecorator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/TransactionResultIteratorDecorator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/TransactionResultIteratorDecorator.java
index a14281d..b269f8d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/TransactionResultIteratorDecorator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/TransactionResultIteratorDecorator.java
@@ -19,15 +19,14 @@
 
 package org.apache.cayenne.access;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.tx.Transaction;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Decorates ResultIterator to close active transaction when the iterator is
  * closed.
@@ -65,10 +64,6 @@ final class TransactionResultIteratorDecorator<T> implements ResultIterator<T> {
             }
 
             throw new CayenneRuntimeException(e);
-        } finally {
-            if (BaseTransaction.getThreadTransaction() == tx) {
-                BaseTransaction.bindThreadTransaction(null);
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/d8e5afec/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
index ba35c5d..e630e46 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
@@ -28,6 +28,7 @@ import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -38,6 +39,7 @@ import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DataContextIteratedQueryIT extends ServerCase {
@@ -228,4 +230,15 @@ public class DataContextIteratedQueryIT extends ServerCase {
 
         assertEquals(14, tPainting.getRowCount());
     }
+
+    @Test
+    public void testPerformIteratedQuery_Transaction() throws Exception {
+        createArtistsDataSet();
+
+        try (ResultIterator<?> it = context.performIteratedQuery(SelectQuery.query(Artist.class));) {
+            assertNull(BaseTransaction.getThreadTransaction());
+        }
+
+        // TODO: how do we test that transaction unbound from the thread is closed/committed at the end?
+    }
 }


[3/5] cayenne git commit: disable concurrent PK tests for HSQLDB whose PK generator has no DB locks

Posted by aa...@apache.org.
disable concurrent PK tests for HSQLDB whose PK generator has no DB locks


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/66d3f0a9
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/66d3f0a9
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/66d3f0a9

Branch: refs/heads/master
Commit: 66d3f0a95768890b4d1aba0fbab2418b323b41be
Parents: 574eefb
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Sep 5 17:54:37 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Sep 5 17:54:37 2016 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/dba/JdbcPkGenerator.java | 29 +++++++++---------
 .../cayenne/dba/ConcurrentPkGeneratorIT.java    |  9 ++++++
 .../cayenne/unit/HSQLDBUnitDbAdapter.java       |  6 ++++
 .../org/apache/cayenne/unit/UnitDbAdapter.java  | 32 +++++++++++---------
 4 files changed, 47 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/66d3f0a9/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
index 4d9393f..9e159d2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
@@ -19,19 +19,6 @@
 
 package org.apache.cayenne.dba;
 
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectId;
@@ -45,6 +32,20 @@ import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.util.IDUtil;
 
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ConcurrentMap;
+
 /**
  * Default primary key generator implementation. Uses a lookup table named
  * "AUTO_PK_SUPPORT" to search and increment primary keys for tables.
@@ -55,7 +56,7 @@ public class JdbcPkGenerator implements PkGenerator {
 	static final long DEFAULT_PK_START_VALUE = 200;
 
 	protected JdbcAdapter adapter;
-	protected ConcurrentHashMap<String, Queue<Long>> pkCache = new ConcurrentHashMap<>();
+	protected ConcurrentMap<String, Queue<Long>> pkCache = new ConcurrentHashMap<>();
 	protected int pkCacheSize = DEFAULT_PK_CACHE_SIZE;
 	protected long pkStartValue = DEFAULT_PK_START_VALUE;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/66d3f0a9/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
index 7d2c06e..74bddb3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
@@ -27,6 +27,7 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.testdo.qualified.Qualified1;
+import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -47,12 +48,20 @@ public class ConcurrentPkGeneratorIT extends ServerCase {
 
     @Inject
     private ServerRuntime runtime;
+
+	@Inject
+	private UnitDbAdapter unitDbAdapter;
     
     /*
      * Attempts to discover any problems regarding thread locking in the PkGenerator
      */
     @Test
     public void testConcurrentInserts() throws Exception {
+
+    	if(!unitDbAdapter.supportsPKGeneratorConcurrency()) {
+    		return;
+		}
+
 		final DataMap dataMap = runtime.getDataDomain().getDataMap("qualified");
 		
 		// clear out the table

http://git-wip-us.apache.org/repos/asf/cayenne/blob/66d3f0a9/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
index c78791f..4fb5e94 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
@@ -56,4 +56,10 @@ public class HSQLDBUnitDbAdapter extends UnitDbAdapter {
             executeDDL(con, "hsqldb", "create-sp-aliases.sql");
         }
     }
+
+    @Override
+    public boolean supportsPKGeneratorConcurrency() {
+        // HSQL is not locking AUTO_PK_TABLE, so running PkGenerator in parallel may result in conflicting ranges
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/66d3f0a9/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
index b6ff454..6230943 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
@@ -19,6 +19,18 @@
 
 package org.apache.cayenne.unit;
 
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.Procedure;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,18 +45,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.Procedure;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
 /**
  * Defines API and a common superclass for testing various database features.
  * Different databases support different feature sets that need to be tested
@@ -53,7 +53,7 @@ import org.apache.commons.logging.LogFactory;
  */
 public class UnitDbAdapter {
 
-    private static Log logger = LogFactory.getLog(UnitDbAdapter.class);
+    private static final Log logger = LogFactory.getLog(UnitDbAdapter.class);
 
     @Inject
     protected RuntimeProperties runtimeProperties;
@@ -66,6 +66,10 @@ public class UnitDbAdapter {
         }
         this.adapter = adapter;
     }
+
+    public boolean supportsPKGeneratorConcurrency() {
+        return true;
+    }
     
     public String getIdentifiersStartQuote() {
         return "\"";
@@ -78,8 +82,6 @@ public class UnitDbAdapter {
     /**
      * Returns whether the target DB treats REAL values as DOUBLEs. Default is
      * false, i.e. REALs are treated as FLOATs.
-     * 
-     * @return
      */
     public boolean realAsDouble() {
         return false;


[4/5] cayenne git commit: ensure consistent connection pool size for the integration tests

Posted by aa...@apache.org.
ensure consistent connection pool size for the integration tests


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/64ae0fb1
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/64ae0fb1
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/64ae0fb1

Branch: refs/heads/master
Commit: 64ae0fb11432d69c7477fbda41ab1e752bf8d2b4
Parents: 66d3f0a
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Sep 5 14:37:19 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Sep 5 17:58:30 2016 +0300

----------------------------------------------------------------------
 .../cayenne/unit/di/server/ConnectionProperties.java    |  7 +++++--
 .../di/server/ServerCaseDataSourceInfoProvider.java     | 12 ++++++------
 2 files changed, 11 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/64ae0fb1/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
index b5aa6d1..525fc39 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
@@ -35,6 +35,9 @@ import java.util.Map;
  */
 class ConnectionProperties {
 
+	static final int MIN_CONNECTIONS = 1;
+	static final int MAX_CONNECTIONS = 2;
+
 	private static final String ADAPTER_KEY = "adapter";
 	private static final String ADAPTER20_KEY = "cayenne.adapter";
 	private static final String USER_NAME_KEY = "jdbc.username";
@@ -85,8 +88,8 @@ class ConnectionProperties {
 		dsi.setPassword(props.getString(PASSWORD_KEY));
 		dsi.setDataSourceUrl(props.getString(URL_KEY));
 		dsi.setJdbcDriver(props.getString(DRIVER_KEY));
-		dsi.setMinConnections(1);
-		dsi.setMaxConnections(2);
+		dsi.setMinConnections(MIN_CONNECTIONS);
+		dsi.setMaxConnections(MAX_CONNECTIONS);
 
 		return dsi;
 	}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/64ae0fb1/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
index ffef0b9..64d190f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
@@ -68,8 +68,8 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         hsqldb.setPassword("");
         hsqldb.setDataSourceUrl("jdbc:hsqldb:mem:aname");
         hsqldb.setJdbcDriver("org.hsqldb.jdbcDriver");
-        hsqldb.setMinConnections(1);
-        hsqldb.setMaxConnections(2);
+        hsqldb.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+        hsqldb.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
         inMemoryDataSources.put("hsql", hsqldb);
 
         DataSourceInfo h2 = new DataSourceInfo();
@@ -78,8 +78,8 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         h2.setPassword("");
         h2.setDataSourceUrl("jdbc:h2:mem:aname;MVCC=TRUE;DB_CLOSE_DELAY=-1");
         h2.setJdbcDriver("org.h2.Driver");
-        h2.setMinConnections(1);
-        h2.setMaxConnections(2);
+        h2.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+        h2.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
         inMemoryDataSources.put("h2", h2);
 
         DataSourceInfo derby = new DataSourceInfo();
@@ -88,8 +88,8 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         derby.setPassword("");
         derby.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
         derby.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
-        derby.setMinConnections(1);
-        derby.setMaxConnections(2);
+        derby.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+        derby.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
         inMemoryDataSources.put("derby", derby);
     }
 


[5/5] cayenne git commit: CAY-2111 Unbind transaction object from the current thread for iterated queries

Posted by aa...@apache.org.
CAY-2111 Unbind transaction object from the current thread for iterated queries


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5838101e
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5838101e
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5838101e

Branch: refs/heads/master
Commit: 5838101e5f43beba92dd20d2cd1fd42b42229a6f
Parents: 64ae0fb
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Sep 5 18:04:25 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Sep 5 18:04:25 2016 +0300

----------------------------------------------------------------------
 docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/5838101e/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 1d302c8..aa2df92 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -29,6 +29,7 @@ CAY-2102 EJBQL: db: path not supported in select columns
 CAY-2103 cayenne-crypto: support for mapping non-String and non-binary types
 CAY-2106 cayenne-crypto: allow DI contribution of type converters inside ValueTransformerFactory
 CAY-2107 cayenne-crypto: Lazy initialization of crypto subsystem
+CAY-2111 Unbind transaction object from the current thread for iterated queries
 
 Bug Fixes:
 


[2/5] cayenne git commit: ensure consistent connection pool size for the integration tests

Posted by aa...@apache.org.
ensure consistent connection pool size for the integration tests


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/574eefb9
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/574eefb9
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/574eefb9

Branch: refs/heads/master
Commit: 574eefb97b3785053b7e1c8db18e20aa00d20316
Parents: d8e5afe
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Sep 5 14:37:19 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Sep 5 14:37:19 2016 +0300

----------------------------------------------------------------------
 .../unit/di/server/ConnectionProperties.java        |  8 +++++---
 .../di/server/ServerCaseDataSourceInfoProvider.java | 16 ++++++++++------
 2 files changed, 15 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/574eefb9/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
index 3a66b5b..b5aa6d1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ConnectionProperties.java
@@ -19,15 +19,15 @@
 
 package org.apache.cayenne.unit.di.server;
 
+import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.commons.collections.ExtendedProperties;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.cayenne.conn.DataSourceInfo;
-import org.apache.commons.collections.ExtendedProperties;
-
 /**
  * ConnectionProperties handles a set of DataSourceInfo objects using
  * information stored in $HOME/.cayenne/connection.properties. As of now this is
@@ -85,6 +85,8 @@ class ConnectionProperties {
 		dsi.setPassword(props.getString(PASSWORD_KEY));
 		dsi.setDataSourceUrl(props.getString(URL_KEY));
 		dsi.setJdbcDriver(props.getString(DRIVER_KEY));
+		dsi.setMinConnections(1);
+		dsi.setMaxConnections(2);
 
 		return dsi;
 	}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/574eefb9/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
index 1e657ef..ffef0b9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
@@ -18,11 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.server;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.dba.derby.DerbyAdapter;
@@ -33,6 +28,11 @@ import org.apache.commons.collections.ExtendedProperties;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
 public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo> {
 
     private static Log logger = LogFactory.getLog(ServerCaseDataSourceInfoProvider.class);
@@ -68,6 +68,8 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         hsqldb.setPassword("");
         hsqldb.setDataSourceUrl("jdbc:hsqldb:mem:aname");
         hsqldb.setJdbcDriver("org.hsqldb.jdbcDriver");
+        hsqldb.setMinConnections(1);
+        hsqldb.setMaxConnections(2);
         inMemoryDataSources.put("hsql", hsqldb);
 
         DataSourceInfo h2 = new DataSourceInfo();
@@ -76,7 +78,7 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         h2.setPassword("");
         h2.setDataSourceUrl("jdbc:h2:mem:aname;MVCC=TRUE;DB_CLOSE_DELAY=-1");
         h2.setJdbcDriver("org.h2.Driver");
-        h2.setMinConnections(2);
+        h2.setMinConnections(1);
         h2.setMaxConnections(2);
         inMemoryDataSources.put("h2", h2);
 
@@ -86,6 +88,8 @@ public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo
         derby.setPassword("");
         derby.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
         derby.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
+        derby.setMinConnections(1);
+        derby.setMaxConnections(2);
         inMemoryDataSources.put("derby", derby);
     }