[jboss-cvs] JBossAS SVN: r110556 - projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 7 10:00:23 EST 2011
Author: jesper.pedersen
Date: 2011-02-07 10:00:23 -0500 (Mon, 07 Feb 2011)
New Revision: 110556
Modified:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
Log:
Synchronize access to pool size due fix race with pool filler
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-02-07 14:23:46 UTC (rev 110555)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-02-07 15:00:23 UTC (rev 110556)
@@ -184,6 +184,19 @@
}
/**
+ * Check if the pool has reached a certain size
+ * @param size The size
+ * @return True if reached; otherwise false
+ */
+ private boolean isSize(int size)
+ {
+ synchronized (cls)
+ {
+ return (cls.size() + checkedOut.size()) >= size;
+ }
+ }
+
+ /**
* {@inheritDoc}
*/
public void reenable()
@@ -402,7 +415,7 @@
checkedOut.remove(cl);
// This is really an error
- if (!kill && cls.size() >= poolConfiguration.getMaxSize())
+ if (!kill && isSize(poolConfiguration.getMaxSize() + 1))
{
log.warn("Destroying returned connection, maximum pool size exceeded " + cl);
kill = true;
@@ -591,7 +604,7 @@
return;
// We already have enough connections
- if (poolConfiguration.getMinSize() - (cls.size() + checkedOut.size()) <= 0)
+ if (isSize(poolConfiguration.getMinSize()))
return;
// Create a connection to fill the pool
@@ -687,7 +700,8 @@
if (poolConfiguration.isStrictMin())
{
- remove = cls.size() > poolConfiguration.getMinSize();
+ // Add 1 to min-pool-size since it is strict
+ remove = isSize(poolConfiguration.getMinSize() + 1);
if (trace)
log.trace("StrictMin is active. Current connection will be removed is " + remove);
More information about the jboss-cvs-commits
mailing list