You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/08/07 12:06:27 UTC

[commons-pool] branch master updated (d9af49f9 -> d2d4ef84)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git


    from d9af49f9 Format tweak
     new 8d18d16e Simplify: entries cannot be null in a ConcurrentHashMap.
     new 96f41c0a Format tweak
     new d2d4ef84 Simplify: Keys and values cannot be null inside a ConcurrentHashMap.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../commons/pool2/impl/GenericKeyedObjectPool.java | 54 +++++++---------------
 1 file changed, 17 insertions(+), 37 deletions(-)


[commons-pool] 03/03: Simplify: Keys and values cannot be null inside a ConcurrentHashMap.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git

commit d2d4ef8442a337e5f039731884901d350d90b359
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Aug 7 08:06:22 2022 -0400

    Simplify: Keys and values cannot be null inside a ConcurrentHashMap.
    
    Javadoc: "Like Hashtable but unlike HashMap, this classdoes not allow null to be used as a key or value."
---
 .../commons/pool2/impl/GenericKeyedObjectPool.java | 44 ++++++++--------------
 1 file changed, 15 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 3b56daa7..aece8351 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -640,13 +640,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
         final Map<PooledObject<T>, K> map = new TreeMap<>();
 
         poolMap.forEach((key, value) -> {
-            // Protect against possible NPE if key has been removed in another
-            // thread. Not worth locking the keys while this loop completes.
-            if (value != null) {
-                // Each item into the map using the PooledObject object as the
-                // key. It then gets sorted based on the idle time
-                value.getIdleObjects().forEach(p -> map.put(p, key));
-            }
+            // Each item into the map using the PooledObject object as the
+            // key. It then gets sorted based on the idle time
+            value.getIdleObjects().forEach(p -> map.put(p, key));
         });
 
         // Now iterate created map and kill the first 15% plus one to account
@@ -1196,11 +1192,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
         final HashMap<String, Integer> result = new HashMap<>();
 
         poolMap.forEach((key, objectDequeue) -> {
-            if (key != null && objectDequeue != null) {
-                result.put(key.toString(), Integer.valueOf(
-                    objectDequeue.getAllObjects().size() -
-                    objectDequeue.getIdleObjects().size()));
-            }
+            result.put(key.toString(), Integer.valueOf(
+                objectDequeue.getAllObjects().size() -
+                objectDequeue.getIdleObjects().size()));
         });
         return result;
     }
@@ -1266,9 +1260,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
         for (final Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
             final K k = entry.getKey();
             final ObjectDeque<T> deque = entry.getValue();
-            if (deque != null) {
-                result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) : ZERO);
-            }
+            result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) : ZERO);
         }
         return result;
     }
@@ -1289,7 +1281,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
      *         {@code false}
      */
     private boolean hasBorrowWaiters() {
-        return getBlockWhenExhausted() && poolMap.values().stream().anyMatch(deque -> deque != null && deque.getIdleObjects().hasTakeWaiters());
+        return getBlockWhenExhausted() && poolMap.values().stream().anyMatch(deque -> deque.getIdleObjects().hasTakeWaiters());
     }
 
     /**
@@ -1360,11 +1352,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
     public Map<String, List<DefaultPooledObjectInfo>> listAllObjects() {
         final Map<String, List<DefaultPooledObjectInfo>> result = new HashMap<>();
 
-        poolMap.forEach((k, value) -> {
-            if (value != null) {
-                result.put(k.toString(), value.getAllObjects().values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toList()));
-            }
-        });
+        poolMap.forEach((k, v) -> result.put(k.toString(), v.getAllObjects().values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toList())));
         return result;
     }
 
@@ -1579,14 +1567,12 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
         for (final Entry<K, GenericKeyedObjectPool<K, T, E>.ObjectDeque<T>> entry : poolMap.entrySet()) {
             final K k = entry.getKey();
             final ObjectDeque<T> deque = entry.getValue();
-            if (deque != null) {
-                final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects();
-                final int queueLength = pool.getTakeQueueLength();
-                if (getNumActive(k) < maxTotalPerKeySave && queueLength > maxQueueLength) {
-                    maxQueueLength = queueLength;
-                    mostLoaded = pool;
-                    loadedKey = k;
-                }
+            final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects();
+            final int queueLength = pool.getTakeQueueLength();
+            if (getNumActive(k) < maxTotalPerKeySave && queueLength > maxQueueLength) {
+                maxQueueLength = queueLength;
+                mostLoaded = pool;
+                loadedKey = k;
             }
         }
 


[commons-pool] 01/03: Simplify: entries cannot be null in a ConcurrentHashMap.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git

commit 8d18d16e87fe46ea90a0744499402876b3a93ff6
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Aug 7 07:46:11 2022 -0400

    Simplify: entries cannot be null in a ConcurrentHashMap.
---
 .../apache/commons/pool2/impl/GenericKeyedObjectPool.java  | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index c8a3bfb8..b1a8c089 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1197,15 +1197,11 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
     public Map<String, Integer> getNumActivePerKey() {
         final HashMap<String, Integer> result = new HashMap<>();
 
-        poolMap.entrySet().forEach(entry -> {
-            if (entry != null) {
-                final K key = entry.getKey();
-                final ObjectDeque<T> objectDequeue = entry.getValue();
-                if (key != null && objectDequeue != null) {
-                    result.put(key.toString(), Integer.valueOf(
-                            objectDequeue.getAllObjects().size() -
-                            objectDequeue.getIdleObjects().size()));
-                }
+        poolMap.forEach((key, objectDequeue) -> {
+            if (key != null && objectDequeue != null) {
+                result.put(key.toString(), Integer.valueOf(
+                    objectDequeue.getAllObjects().size() -
+                    objectDequeue.getIdleObjects().size()));
             }
         });
         return result;


[commons-pool] 02/03: Format tweak

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git

commit 96f41c0aa271e6e4981e85b25e615f709787e50b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Aug 7 07:51:39 2022 -0400

    Format tweak
---
 .../java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java    | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index b1a8c089..3b56daa7 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -302,11 +302,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
      * @throws E If the associated factory fails to passivate the object
      */
     private void addIdleObject(final K key, final PooledObject<T> p) throws E {
-
         if (p != null) {
             factory.passivateObject(key, p);
-            final LinkedBlockingDeque<PooledObject<T>> idleObjects =
-                    poolMap.get(key).getIdleObjects();
+            final LinkedBlockingDeque<PooledObject<T>> idleObjects = poolMap.get(key).getIdleObjects();
             if (getLifo()) {
                 idleObjects.addFirst(p);
             } else {