提交 c147ad34 编写于 作者: I igerasim

8159822: Non-synchronized access to shared members of com.sun.jndi.ldap.pool.Pool

Reviewed-by: coffeys
上级 f3a397ec
......@@ -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<Object, ConnectionsRef> 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<Object, ConnectionsRef> 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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册