You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2013/10/11 16:09:15 UTC
svn commit: r1531298 -
/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
Author: markt
Date: Fri Oct 11 14:09:15 2013
New Revision: 1531298
URL: http://svn.apache.org/r1531298
Log:
POOL-211
Add a useUsageTracking option to AbandonedConfig
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
Modified: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java?rev=1531298&r1=1531297&r2=1531298&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java (original)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java Fri Oct 11 14:09:15 2013
@@ -20,10 +20,11 @@ package org.apache.commons.pool2.impl;
import java.io.PrintWriter;
import org.apache.commons.pool2.TrackedUse;
+import org.apache.commons.pool2.UsageTracking;
/**
* Configuration settings for abandoned object removal.
- *
+ *
* @version $Revision:$
*/
public class AbandonedConfig {
@@ -32,19 +33,13 @@ public class AbandonedConfig {
* Whether or not borrowObject performs abandoned object removal.
*/
private boolean removeAbandonedOnBorrow = false;
-
- /**
- * Whether or not pool maintenance (evictor) performs abandoned object
- * removal.
- */
- private boolean removeAbandonedOnMaintenance = false;
/**
* <p>Flag to remove abandoned objects if they exceed the
* removeAbandonedTimeout when borrowObject is invoked.</p>
*
* <p>The default value is false.</p>
- *
+ *
* <p>If set to true, abandoned objects are removed by borrowObject if
* there are fewer than 2 idle objects available in the pool and
* <code>getNumActive() > getMaxTotal() - 3</code> </p>
@@ -66,17 +61,23 @@ public class AbandonedConfig {
public void setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow) {
this.removeAbandonedOnBorrow = removeAbandonedOnBorrow;
}
-
+
+ /**
+ * Whether or not pool maintenance (evictor) performs abandoned object
+ * removal.
+ */
+ private boolean removeAbandonedOnMaintenance = false;
+
/**
* <p>Flag to remove abandoned objects if they exceed the
* removeAbandonedTimeout when pool maintenance (the "evictor")
* runs.</p>
*
* <p>The default value is false.</p>
- *
+ *
* <p>If set to true, abandoned objects are removed by the pool
* maintenance thread when it runs. This setting has no effect
- * unless maintenance is enabled by setting
+ * unless maintenance is enabled by setting
*{@link GenericObjectPool#getTimeBetweenEvictionRunsMillis() timeBetweenEvictionRunsMillis}
* to a positive number.</p>
*
@@ -103,15 +104,15 @@ public class AbandonedConfig {
*/
private int removeAbandonedTimeout = 300;
- /**
+ /**
* <p>Timeout in seconds before an abandoned object can be removed.</p>
- *
+ *
* <p>The time of most recent use of an object is the maximum (latest) of
* {@link TrackedUse#getLastUsed()} (if this class of the object implements
* TrackedUse) and the time when the object was borrowed from the pool.</p>
- *
+ *
* <p>The default value is 300 seconds.</p>
- *
+ *
* @return the abandoned object timeout in seconds
*/
public int getRemoveAbandonedTimeout() {
@@ -121,8 +122,8 @@ public class AbandonedConfig {
/**
* <p>Sets the timeout in seconds before an abandoned object can be
* removed</p>
- *
- * <p>Setting this property has no effect if
+ *
+ * <p>Setting this property has no effect if
* {@link #getRemoveAbandonedOnBorrow() removeAbandonedOnBorrow} and
* {@link #getRemoveAbandonedOnMaintenance() removeAbandonedOnMaintenance}
* are both false.</p>
@@ -147,7 +148,7 @@ public class AbandonedConfig {
* Defaults to false.
* Logging of abandoned objects adds overhead for every object created
* because a stack trace has to be generated.
- *
+ *
* @return boolean true if stack trace logging is turned on for abandoned
* objects
*
@@ -159,7 +160,7 @@ public class AbandonedConfig {
/**
* Sets the flag to log stack traces for application code which abandoned
* an object.
- *
+ *
* @param logAbandoned true turns on abandoned stack trace logging
* @see #getLogAbandoned()
*
@@ -172,7 +173,7 @@ public class AbandonedConfig {
* PrintWriter to use to log information on abandoned objects.
*/
private PrintWriter logWriter = new PrintWriter(System.out);
-
+
/**
* Returns the log writer being used by this configuration to log
* information on abandoned objects. If not set, a PrintWriter based on
@@ -183,14 +184,40 @@ public class AbandonedConfig {
public PrintWriter getLogWriter() {
return logWriter;
}
-
+
/**
* Sets the log writer to be used by this configuration to log
* information on abandoned objects.
- *
+ *
* @param logWriter The new log writer
*/
public void setLogWriter(PrintWriter logWriter) {
this.logWriter = logWriter;
}
+
+ /**
+ * If the pool implements {@link UsageTracking}, should the pool record a
+ * stack trace every time a method is called on a pooled object and retain
+ * the most recent stack trace to aid debugging of abandoned objects?
+ */
+ private boolean useUsageTracking = false;
+
+ /**
+ * If the pool implements {@link UsageTracking}, should the pool record a
+ * stack trace every time a method is called on a pooled object and retain
+ * the most recent stack trace to aid debugging of abandoned objects?
+ */
+ public boolean getUseUsageTracking() {
+ return useUsageTracking;
+ }
+
+ /**
+ * If the pool implements {@link UsageTracking}, configure whether the pool
+ * should record a stack trace every time a method is called on a pooled
+ * object and retain the most recent stack trace to aid debugging of
+ * abandoned objects.
+ */
+ public void setUseUsageTracking(boolean useUsageTracking) {
+ this.useUsageTracking = useUsageTracking;
+ }
}