From: fhanik Date: Tue, 28 Oct 2008 15:00:22 +0000 (+0000) Subject: Make the polling fairness configurable X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=a85dc09ac392b2e0896ea00ae09bc5bdd685e743;p=tomcat7.0 Make the polling fairness configurable git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@708592 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java index 24cab9765..79503699d 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java @@ -265,7 +265,7 @@ public class ConnectionPool { //make space for 10 extra in case we flow over a bit busy = new ArrayBlockingQueue(properties.getMaxActive(),false); //make space for 10 extra in case we flow over a bit - idle = new ArrayBlockingQueue(properties.getMaxActive(),false); + idle = new ArrayBlockingQueue(properties.getMaxActive(),properties.isFairQueue()); //if the evictor thread is supposed to run, start it now if (properties.isPoolSweeperEnabled()) { diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java index 58265bf04..5f4cbb680 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java @@ -99,6 +99,7 @@ public class DataSourceFactory implements ObjectFactory { protected final static String PROP_INTERCEPTORS = "jdbcInterceptors"; protected final static String PROP_VALIDATIONINTERVAL = "validationInterval"; protected final static String PROP_JMX_ENABLED = "jmxEnabled"; + protected final static String PROP_FAIR_QUEUE = "fairQueue"; public static final int UNKNOWN_TRANSACTIONISOLATION = -1; @@ -135,7 +136,8 @@ public class DataSourceFactory implements ObjectFactory { PROP_CONNECTIONPROPERTIES, PROP_INITSQL, PROP_INTERCEPTORS, - PROP_JMX_ENABLED + PROP_JMX_ENABLED, + PROP_FAIR_QUEUE }; // -------------------------------------------------- ObjectFactory Methods @@ -380,6 +382,12 @@ public class DataSourceFactory implements ObjectFactory { if (value != null) { dataSource.getPoolProperties().setJmxEnabled(Boolean.parseBoolean(value)); } + + value = properties.getProperty(PROP_FAIR_QUEUE); + if (value != null) { + dataSource.getPoolProperties().setFairQueue(Boolean.parseBoolean(value)); + } + // Return the configured DataSource instance DataSource ds = getDataSource(dataSource); diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java index 878585c2f..ba072301a 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java @@ -284,6 +284,10 @@ public class DataSourceProxy { this.getPoolProperties().setJmxEnabled(enabled); } + public void setFairQueue(boolean fairQueue) { + this.getPoolProperties().setFairQueue(fairQueue); + } + public void setConnectionProperties(String properties) { try { java.util.Properties prop = DataSourceFactory.getProperties(properties); diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java index 6f94d3694..225ca48fc 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java @@ -58,6 +58,15 @@ public class PoolProperties { protected String initSQL; protected boolean testOnConnect =false; private String jdbcInterceptors=null; + private boolean fairQueue = false; + + public boolean isFairQueue() { + return fairQueue; + } + + public void setFairQueue(boolean fairQueue) { + this.fairQueue = fairQueue; + } public boolean isAccessToUnderlyingConnectionAllowed() { return accessToUnderlyingConnectionAllowed;