The method SharedPoolDataSource.getPooledConnectionAndInfo has the
following code:
synchronized (userKeys) {
if (userKeys.containsKey(username)) {
userKeys.remove(username);
}
}
Why not just use userKeys.remove(username)?
What is the purpose of checking the map first?
Also, the keys used for userKeys consist of the username+password, so
this doesn't really make sense anyway - it will only remove an entry
if the password is the empty string.
Note that the synch. block may still be needed, because
LRUMap.remove() - i.e. SequencedHashMap.remove() - updates the
underlying map and some other fields but is not synchronised.
Unfortunately the Javadoc does not say what the class invariants are.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]