commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Drechsel (JIRA)" <j...@apache.org>
Subject [jira] Created: (DBCP-245) SharedPoolDataSource saves wrong password forever
Date Wed, 10 Oct 2007 13:18:50 GMT
SharedPoolDataSource saves wrong password forever
-------------------------------------------------

                 Key: DBCP-245
                 URL: https://issues.apache.org/jira/browse/DBCP-245
             Project: Commons Dbcp
          Issue Type: Bug
    Affects Versions: 1.2.2
         Environment: Use of SharedPoolDataSource see sample code

	if (privSharedDS == null)
{
	privConPoolDS = new PGConnectionPoolDataSource();
	privConPoolDS.setServerName(privServerName);
	privConPoolDS.setDatabaseName(privServerDB);
	privConPoolDS.setUser(privUser);
	privConPoolDS.setPassword(privPassword);
	// --------------------------------------
	// dbcp caching via SharedPoolDataSource
	// --------------------------------------
	privSharedDS = new SharedPoolDataSource();
	privSharedDS.setConnectionPoolDataSource(privConPoolDS);
		privSharedDS.setMaxActive(10); // 0 = no limit
	privSharedDS.setMaxIdle(10);
	privSharedDS.setMinEvictableIdleTimeMillis(1000);
	privSharedDS.setMaxWait(1000); // -1 = no limit
	privSharedDS.setTimeBetweenEvictionRunsMillis(1000);
	privSharedDS.setTestWhileIdle(true);
}
// --------------------------------------
// dbcp caching via SharedPoolDataSource
// --------------------------------------
tmpCon = privSharedDS.getConnection(privUser, privPassword);
            Reporter: Michael Drechsel
            Priority: Minor


The SharedPoolDataSource saves wrong password forever


1. Get a connection for user1 (use username of user1 and password of user1) ---> connection
ok
2. Get a connection for user2 (use username of user2 and a wrong password) --> connection
failed
3. Get a connection for user2 (use username of user2 and password of user2) --> connection
will be failed too because the wrong password is stored in the usersKey map.



Bugfix
===================================================================

   protected synchronized PooledConnectionAndInfo 
        getPooledConnectionAndInfo(String username, String password)
        throws SQLException {
        if (pool == null) {
            try {
                registerPool(username, password);
            } catch (NamingException e) {
                throw new SQLNestedException("RegisterPool failed", e);
            }
        }

        PooledConnectionAndInfo info = null;
        UserPassKey userPassKey = null;
        try {
        	userPassKey = getUserPassKey(username, password);
            info = (PooledConnectionAndInfo) pool
                .borrowObject(userPassKey);
        }
        catch (Exception e) {
        	
        	if (userKeys != null && userKeys.containsKey(username)) {
        		userKeys.remove(username);
        	}
        	
            throw new SQLNestedException(
                "Could not retrieve connection info from pool", e);
        }
        return info;
    }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message