sebb wrote:
> The method SharedPoolDataSource.getPooledConnectionAndInfo has the
> following code:
>
> synchronized (userKeys) {
> if (userKeys.containsKey(username)) {
> userKeys.remove(username);
> }
> }
>
> Why not just use userKeys.remove(username)?
That would work, other than other problem below.
> 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.
Yes, it should be username+password, so the code is really doing
nothing now. The concatenation setup, btw, is bogus as there is no
guarantee that you won't have collisions. Probably worth raising a
defect for this.
Good catch, I will fix the cleanup bug.
>
> 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.
Yes the synch is needed.
Phil
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]