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);
}