diff --git a/jdk/src/java.naming/share/classes/com/sun/jndi/ldap/pool/Pool.java b/jdk/src/java.naming/share/classes/com/sun/jndi/ldap/pool/Pool.java index 723f11a8783..a2813bf9233 100644 --- a/jdk/src/java.naming/share/classes/com/sun/jndi/ldap/pool/Pool.java +++ b/jdk/src/java.naming/share/classes/com/sun/jndi/ldap/pool/Pool.java @@ -118,7 +118,11 @@ final public class Pool { PooledConnectionFactory factory) throws NamingException { d("get(): ", id); - d("size: ", map.size()); + if (debug) { + synchronized (map) { + d("size: ", map.size()); + } + } expungeStaleConnections(); @@ -141,10 +145,9 @@ final public class Pool { // Keep the weak reference through the element of a linked list weakRefs.add(weakRef); } + d("get(): size after: ", map.size()); } - d("get(): size after: ", map.size()); - return conns.get(timeout, factory); // get one connection from list } @@ -209,19 +212,24 @@ final public class Pool { out.println("maximum pool size: " + maxSize); out.println("preferred pool size: " + prefSize); out.println("initial pool size: " + initSize); - out.println("current pool size: " + map.size()); - for (Map.Entry entry : map.entrySet()) { - id = entry.getKey(); - conns = entry.getValue().getConnections(); - out.println(" " + id + ":" + conns.getStats()); + synchronized (map) { + out.println("current pool size: " + map.size()); + + for (Map.Entry entry : map.entrySet()) { + id = entry.getKey(); + conns = entry.getValue().getConnections(); + out.println(" " + id + ":" + conns.getStats()); + } } out.println("====== Pool end ====================="); } public String toString() { - return super.toString() + " " + map.toString(); + synchronized (map) { + return super.toString() + " " + map.toString(); + } } private void d(String msg, int i) {