Author: fhanik
Date: Tue Mar 27 17:55:41 2012
New Revision: 1305931
URL: http://svn.apache.org/viewvc?rev=1305931view=rev
Log:
https://issues.apache.org/bugzilla/show_bug.cgi?id=52066
Add in a configuration attribute to allow a thread interrupt state to be
retained for the calling library to see
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/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=1305931r1=1305930r2=1305931view=diff
==
--- tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml (original)
+++ tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml Tue Mar 27 17:55:41 2012
@@ -463,6 +463,11 @@
p(boolean) Set this to true to log errors during the validation phase
to the log file. If set to true, errors will be logged as SEVERE. Default value
is codefalse/code for backwards compatibility.
/p
/attribute
+attribute name=propagateInterruptState required=false
+ 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 codefalse/code for backwards compatibility.
+ /p
+/attribute
+
/attributes
/subsection
/section
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=1305931r1=1305930r2=1305931view=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
Tue Mar 27 17:55:41 2012
@@ -381,7 +381,9 @@ public class ConnectionPool {
}
} //while
} catch (InterruptedException ex) {
-Thread.interrupted();
+if (!getPoolProperties().getPropagateInterruptState()) {
+Thread.interrupted();
+}
}
if (pool.size()==0 force pool!=busy) pool = busy;
}
@@ -626,7 +628,9 @@ public class ConnectionPool {
//retrieve an existing connection
con = idle.poll(timetowait, TimeUnit.MILLISECONDS);
} catch (InterruptedException ex) {
-Thread.interrupted();//clear the flag, and bail out
+if (!getPoolProperties().getPropagateInterruptState()) {
+Thread.interrupted();
+}
SQLException sx = new SQLException(Pool wait interrupted.);
sx.initCause(ex);
throw sx;
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=1305931r1=1305930r2=1305931view=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
Tue Mar 27 17:55:41 2012
@@ -1268,4 +1268,20 @@ public class DataSourceProxy implements
return getPoolProperties().getLogValidationErrors();
}
+/**
+ * {@inheritDoc}
+ */
+@Override
+public boolean getPropagateInterruptState() {
+return getPoolProperties().getPropagateInterruptState();
+}
+
+/**
+ * {@inheritDoc}
+ */
+@Override
+public void setPropagateInterruptState(boolean propagateInterruptState) {
+
getPoolProperties().setPropagateInterruptState(propagateInterruptState);
+}
+
}
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=1305931r1=1305930r2=1305931view=diff
==
---