You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2013/09/04 10:56:25 UTC
svn commit: r1519948 - in /tomcat/trunk/modules/jdbc-pool: doc/
src/main/java/org/apache/tomcat/jdbc/pool/
src/main/java/org/apache/tomcat/jdbc/pool/jmx/
Author: kfujino
Date: Wed Sep 4 08:56:24 2013
New Revision: 1519948
URL: http://svn.apache.org/r1519948
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55343
Add flag to ignore error of connection creation while initializing the pool.
Modified:
tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
Modified: tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml (original)
+++ tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml Wed Sep 4 08:56:24 2013
@@ -492,6 +492,13 @@
<p>(boolean) Set this to true to propagate the interrupt state for a thread that has been interrupted (not clearing the interrupt state). Default value is <code>false</code> for backwards compatibility.
</p>
</attribute>
+ <attribute name="ignoreExceptionOnPreLoad" required="false">
+ <p>(boolean) Flag whether ignore error of connection creation while initializing the pool.
+ Set to true if you want to ignore error of connection creation while initializing the pool.
+ Set to false if you want to fail the initialization of the pool by throwing exception.
+ The default value is <code>false</code>.
+ </p>
+ </attribute>
</attributes>
</subsection>
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Wed Sep 4 08:56:24 2013
@@ -487,9 +487,12 @@ public class ConnectionPool {
} //for
} catch (SQLException x) {
- if (jmxPool!=null) jmxPool.notify(org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.NOTIFY_INIT, getStackTrace(x));
- close(true);
- throw x;
+ log.error("Unable to create initial connections of pool.", x);
+ if (!poolProperties.isIgnoreExceptionOnPreLoad()) {
+ if (jmxPool!=null) jmxPool.notify(org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.NOTIFY_INIT, getStackTrace(x));
+ close(true);
+ throw x;
+ }
} finally {
//return the members as idle to the pool
for (int i = 0; i < initialPool.length; i++) {
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java Wed Sep 4 08:56:24 2013
@@ -122,6 +122,8 @@ public class DataSourceFactory implement
protected static final String PROP_PROPAGATEINTERRUPTSTATE = "propagateInterruptState";
+ protected static final String PROP_IGNOREEXCEPTIONONPRELOAD = "ignoreExceptionOnPreLoad";
+
public static final int UNKNOWN_TRANSACTIONISOLATION = -1;
public static final String OBJECT_NAME = "object_name";
@@ -175,7 +177,8 @@ public class DataSourceFactory implement
PROP_ROLLBACKONRETURN,
PROP_USEDISPOSABLECONNECTIONFACADE,
PROP_LOGVALIDATIONERRORS,
- PROP_PROPAGATEINTERRUPTSTATE
+ PROP_PROPAGATEINTERRUPTSTATE,
+ PROP_IGNOREEXCEPTIONONPRELOAD
};
// -------------------------------------------------- ObjectFactory Methods
@@ -514,6 +517,11 @@ public class DataSourceFactory implement
poolProperties.setPropagateInterruptState(Boolean.parseBoolean(value));
}
+ value = properties.getProperty(PROP_IGNOREEXCEPTIONONPRELOAD);
+ if (value != null) {
+ poolProperties.setIgnoreExceptionOnPreLoad(Boolean.parseBoolean(value));
+ }
+
return poolProperties;
}
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java Wed Sep 4 08:56:24 2013
@@ -1298,6 +1298,22 @@ public class DataSourceProxy implements
getPoolProperties().setPropagateInterruptState(propagateInterruptState);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isIgnoreExceptionOnPreLoad() {
+ return getPoolProperties().isIgnoreExceptionOnPreLoad();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad) {
+ getPoolProperties().setIgnoreExceptionOnPreLoad(ignoreExceptionOnPreLoad);
+ }
+
public void purge() {
try {
createPool().purge();
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java Wed Sep 4 08:56:24 2013
@@ -864,4 +864,16 @@ public interface PoolConfiguration {
*/
public void setPropagateInterruptState(boolean propagateInterruptState);
+ /**
+ * Set to true if you want to ignore error of connection creation while initializing the pool.
+ * Set to false if you want to fail the initialization of the pool by throwing exception.
+ * @param ignoreExceptionOnPreLoad set to true if you want to ignore error of connection creation while initializing the pool.
+ */
+ public void setIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad);
+
+ /**
+ * @see PoolConfiguration#setIgnoreExceptionOnPreLoad(boolean)
+ */
+ public boolean isIgnoreExceptionOnPreLoad();
+
}
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java Wed Sep 4 08:56:24 2013
@@ -92,7 +92,7 @@ public class PoolProperties implements P
private volatile boolean useDisposableConnectionFacade = true;
private volatile boolean logValidationErrors = false;
private volatile boolean propagateInterruptState = false;
-
+ private volatile boolean ignoreExceptionOnPreLoad = false;
/**
* {@inheritDoc}
@@ -1258,6 +1258,22 @@ public class PoolProperties implements P
this.propagateInterruptState = propagateInterruptState;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isIgnoreExceptionOnPreLoad() {
+ return ignoreExceptionOnPreLoad;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad) {
+ this.ignoreExceptionOnPreLoad = ignoreExceptionOnPreLoad;
+ }
+
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=1519948&r1=1519947&r2=1519948&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Wed Sep 4 08:56:24 2013
@@ -833,6 +833,22 @@ public class ConnectionPool extends Noti
* {@inheritDoc}
*/
@Override
+ public boolean isIgnoreExceptionOnPreLoad() {
+ return getPoolProperties().isIgnoreExceptionOnPreLoad();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad) {
+ getPoolProperties().setIgnoreExceptionOnPreLoad(ignoreExceptionOnPreLoad);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void purge() {
pool.purge();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org