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();
         }