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

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new 68a7046763 Clarify that poolMap must use ConcurrentHashMap. No 
functional change.
68a7046763 is described below

commit 68a7046763ac3e26692569adeef01a4a65df2ce8
Author: Mark Thomas <[email protected]>
AuthorDate: Sat Aug 30 12:01:03 2025 +0100

    Clarify that poolMap must use ConcurrentHashMap. No functional change.
    
    Reported by Coverity scan running on Tomcat's internal copy of Commons
    Pool.
---
 java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java 
b/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
index 07e89b6690..69493b77b2 100644
--- a/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
+++ b/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
@@ -209,8 +209,13 @@ public class GenericKeyedObjectPool<K, T> extends 
BaseGenericObjectPool<T>
      * My hash of sub-pools (ObjectQueue). The list of keys 
<strong>must</strong> be kept
      * in step with {@link #poolKeyList} using {@link #keyLock} to ensure any
      * changes to the list of current keys is made in a thread-safe manner.
+     *
+     * Correct operation of the pool requires that a Map implementation is 
used that
+     * supports concurrent read and write (e.g. ensureMinIdle() iterates over 
the key set
+     * while other threads may be adding or removing keys) therefore 
explicitly define
+     * this field as ConcurrentHashMap rather than Map.
      */
-    private final Map<K, ObjectDeque<T>> poolMap =
+    private final ConcurrentHashMap<K, ObjectDeque<T>> poolMap =
             new ConcurrentHashMap<>(); // @GuardedBy("keyLock") for write 
access (and some read access)
 
     /*


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to