You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2015/07/27 22:21:39 UTC
svn commit: r1692943 - in /commons/proper/pool/trunk/src: changes/changes.xml
main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
Author: psteitz
Date: Mon Jul 27 20:21:38 2015
New Revision: 1692943
URL: http://svn.apache.org/r1692943
Log:
Added PrintWriter flush to DefaultPooledObject's printStackTrace method. JIRA: POOL-300.
Modified:
commons/proper/pool/trunk/src/changes/changes.xml
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
Modified: commons/proper/pool/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/changes/changes.xml?rev=1692943&r1=1692942&r2=1692943&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/changes/changes.xml (original)
+++ commons/proper/pool/trunk/src/changes/changes.xml Mon Jul 27 20:21:38 2015
@@ -43,7 +43,10 @@ The <action> type attribute can be add,u
<title>Apache Commons Pool Changes</title>
</properties>
<body>
- <release version="2.5" date="TBD" description="TBD">
+ <release version="2.4.2" date="TBD" description="TBD">
+ <action dev="psteitz" issue="POOL-300" type="fix">
+ Added PrintWriter flush to DefaultPooledObject's printStackTrace method.
+ </action>
</release>
<release version="2.4.1" date="2015-05-30" description=
"This is a patch release, replacing a defective binary jar in version 2.4. Other
Modified: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java?rev=1692943&r1=1692942&r2=1692943&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java (original)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java Mon Jul 27 20:21:38 2015
@@ -243,13 +243,19 @@ public class DefaultPooledObject<T> impl
@Override
public void printStackTrace(PrintWriter writer) {
+ boolean written = false;
Exception borrowedByCopy = this.borrowedBy;
if (borrowedByCopy != null) {
borrowedByCopy.printStackTrace(writer);
+ written = true;
}
Exception usedByCopy = this.usedBy;
if (usedByCopy != null) {
usedByCopy.printStackTrace(writer);
+ written = true;
+ }
+ if (written) {
+ writer.flush();
}
}
Modified: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java?rev=1692943&r1=1692942&r2=1692943&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java (original)
+++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java Mon Jul 27 20:21:38 2015
@@ -17,6 +17,9 @@
package org.apache.commons.pool2.impl;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.Set;
@@ -261,6 +264,25 @@ public class TestAbandonedObjectPool {
Assert.assertTrue (end - start < 5000);
}
+
+ /**
+ * JIRA: POOL-300
+ */
+ @Test
+ public void testStackTrace() throws Exception {
+ abandonedConfig.setRemoveAbandonedOnMaintenance(true);
+ abandonedConfig.setLogAbandoned(true);
+ abandonedConfig.setRemoveAbandonedTimeout(1);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintWriter pw = new PrintWriter(new BufferedOutputStream(baos));
+ abandonedConfig.setLogWriter(pw);
+ pool.setAbandonedConfig(abandonedConfig);
+ pool.setTimeBetweenEvictionRunsMillis(100);
+ PooledTestObject o1 = pool.borrowObject();
+ Thread.sleep(2000);
+ Assert.assertTrue(o1.isDestroyed());
+ Assert.assertTrue(baos.toString().indexOf("Pooled object") >= 0);
+ }
class ConcurrentBorrower extends Thread {
private final ArrayList<PooledTestObject> _borrowed;