You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2020/12/28 18:21:09 UTC
[commons-dbcp] 01/01: [DBCP-567] making abort synchronous
This is an automated email from the ASF dual-hosted git repository.
rmannibucau pushed a commit to branch DBCP-567
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
commit 3d84591c1596908c6095c8670fd13e04f8a92012
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Mon Dec 28 19:20:50 2020 +0100
[DBCP-567] making abort synchronous
---
.../commons/dbcp2/PoolableConnectionFactory.java | 31 ++--------------------
1 file changed, 2 insertions(+), 29 deletions(-)
diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
index a0c053d..9fcbc1c 100644
--- a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
@@ -17,16 +17,11 @@
package org.apache.commons.dbcp2;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Objects;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicLong;
import javax.management.ObjectName;
@@ -49,26 +44,6 @@ import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
*/
public class PoolableConnectionFactory implements PooledObjectFactory<PoolableConnection>, AutoCloseable {
- /**
- * Thread factory that creates daemon threads, with the context class loader from this class.
- */
- private static class AbortThreadFactory implements ThreadFactory {
-
- private static final AbortThreadFactory INSTANCE = new AbortThreadFactory();
-
- @Override
- public Thread newThread(final Runnable runnable) {
- final Thread thread = new Thread(null, runnable, "commons-dbcp-abort-thread");
- thread.setDaemon(true); // POOL-363 - Required for applications using Runtime.addShutdownHook().
- AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
- thread.setContextClassLoader(AbortThreadFactory.class.getClassLoader());
- return null;
- });
-
- return thread;
- }
- }
-
private static final Log log = LogFactory.getLog(PoolableConnectionFactory.class);
/**
@@ -120,8 +95,6 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
private Integer defaultQueryTimeoutSeconds;
- private final ExecutorService executor = Executors.newFixedThreadPool(3, AbortThreadFactory.INSTANCE);
-
/**
* Creates a new {@code PoolableConnectionFactory}.
*
@@ -167,7 +140,7 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
*/
@Override
public void close() {
- executor.shutdown();
+ // no-op
}
@Override
@@ -181,7 +154,7 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
@Override
public void destroyObject(final PooledObject<PoolableConnection> p, final DestroyMode mode) throws Exception {
if (mode != null && mode.equals(DestroyMode.ABANDONED)) {
- p.getObject().getInnermostDelegate().abort(executor);
+ p.getObject().getInnermostDelegate().abort(Runnable::run);
} else {
p.getObject().reallyClose();
}