You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by gl...@apache.org on 2003/09/26 14:45:13 UTC
cvs commit: jakarta-commons/dbcp/src/java/org/apache/commons/dbcp AbandonedObjectPool.java
glenn 2003/09/26 05:45:13
Modified: dbcp/src/java/org/apache/commons/dbcp
AbandonedObjectPool.java
Log:
Fix some potential synchronization problems
Revision Changes Path
1.10 +20 -15 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/AbandonedObjectPool.java
Index: AbandonedObjectPool.java
===================================================================
RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/AbandonedObjectPool.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AbandonedObjectPool.java 23 Sep 2003 13:29:30 -0000 1.9
+++ AbandonedObjectPool.java 26 Sep 2003 12:45:13 -0000 1.10
@@ -152,9 +152,11 @@
super.returnObject(obj);
}
- public synchronized void invalidateObject(Object obj) throws Exception {
+ public void invalidateObject(Object obj) throws Exception {
if (config != null && config.getRemoveAbandoned()) {
- trace.remove(obj);
+ synchronized(trace) {
+ trace.remove(obj);
+ }
}
super.invalidateObject(obj);
}
@@ -163,23 +165,26 @@
* Recover abandoned db connections which have been idle
* greater than the removeAbandonedTimeout.
*/
- private synchronized void removeAbandoned() {
+ private void removeAbandoned() {
// Generate a list of abandoned connections to remove
long now = System.currentTimeMillis();
long timeout = now - (config.getRemoveAbandonedTimeout() * 1000);
ArrayList remove = new ArrayList();
- Iterator it = trace.iterator();
- while (it.hasNext()) {
- PoolableConnection pc = (PoolableConnection)it.next();
- if (pc.getLastUsed() > timeout) {
- continue;
- }
- if (pc.getLastUsed() > 0) {
- remove.add(pc);
+ synchronized(trace) {
+ Iterator it = trace.iterator();
+ while (it.hasNext()) {
+ PoolableConnection pc = (PoolableConnection)it.next();
+ if (pc.getLastUsed() > timeout) {
+ continue;
+ }
+ if (pc.getLastUsed() > 0) {
+ remove.add(pc);
+ }
}
}
+
// Now remove the abandoned connections
- it = remove.iterator();
+ Iterator it = remove.iterator();
while (it.hasNext()) {
PoolableConnection pc = (PoolableConnection)it.next();
if (config.getLogAbandoned()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org