You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2003/06/06 11:49:30 UTC
DO NOT REPLY [Bug 18905] -
Couldn't get connection (Jdbc2PoolDataSource)
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18905>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18905
Couldn't get connection (Jdbc2PoolDataSource)
------- Additional Comments From tagunov@motor.ru 2003-06-06 09:49 -------
Just a quick glance examination:
Jdbc2PoolDataSource.java
private UserPassKey
getUserPassKey(String username, String password)
{
UserPassKey key =
(UserPassKey)userKeys.get(username);
if (key == null)
{
key = new
UserPassKey(username, password);
userKeys.put(username, key);
}
return key;
}
It's here that you loose password.
The first time
getUserPassKey( 'user', 'bad-pass'
)
is invoked for 'user' new UserPassKey( 'user', 'bad-pass' ) is created.
The next
time
getUserPassKey( 'user', 'good-pass' )
is invoked userKeys.get( 'user' ) returns
the same object,
UserPassKey( 'user', 'bad-pass' );
That's how a stale password popps
up.
So either
1) a new UserPassKey should be created here, or
2) setPassword() method
should be added to UserPassKey.
However I do not, probably some thread synchronization
issues require UserPassKey being the key in a
GenericKeyedObjectPool to be immutable, then
only 1)
suits
WBR, Anton
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org