> My guess is that all three runtimes share the same pool

Actually no. If you have 3 runtimes, and let Cayenne instantiate its pool (as 
the stack trace implies) instead of using say container JNDI DataSource, you 
should have 3 instances of the pool. You can try confirming the number of 
PoolManager instances with VisualVM or jmap. 

Andrus

> On Jun 11, 2015, at 6:18 PM, Mike Kienenberger <mkien...@gmail.com> wrote:
> 
> So I finally put my old Cayenne 1.x-upgraded to 3.x app into production.
> 
> A couple of hours later, I got this error [1].   Note that my app
> synchronizes requests so only one thread should ever be running
> Cayenne requests at a time.
> 
> My app has run for years with only a single connection.   My 3.x app
> ran in development for a year before it was deployed to production.
> 
> Is this a fluke?   I did raise my connection pool to 3 the next day,
> but I don't want to arbitrarily assign a higher number and think I've
> magically solved the problem.
> 
> Does having three active server runtimes affect this?   Before, my
> query qualifiers were all handled inside the main runtime, but now I
> have three separate runtimes configured.   My guess is that all three
> runtimes share the same pool, so this is probably not the cause.   And
> since the problem happened a couple hours later and the three runtimes
> were being used well before that without an error, I'd say experience
> bears this out.
> 
> 
> [1]
> 
> Caused by: java.sql.SQLException: Can't obtain connection. Request
> timed out. Total used connections: 1
>        at 
> org.apache.cayenne.conn.PoolManager.uncheckPooledConnection(PoolManager.java:452)
>        at 
> org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:382)
>        at 
> org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:371)
>        at 
> org.apache.cayenne.access.DataNode$TransactionDataSource.getConnection(DataNode.java:351)
>        at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:259)
> 

Reply via email to