On 11/05/2011 01:18, Phil Steitz wrote:
> Please raise issues and/or update changes.xml to keep track of these
> changes.

Will do. My focus so far has been on seeing if it is possible to get
DBCP to a point where it is on a par with jdbc-pool performance-wise. I
purposely skipped a lot of house-keeping along the way in case it didn't
work. Now it has (DBCP is a lot closer but still not quite as fast as
jdbc-pool) I'll go back and do the house-keeping.

> I guess in this case, we might want to doc the fact that we are just
> tracking what dbcp thinks the state of the connection is.  If access
> to the underlying connection is allowed and it gets modified, all
> bets are off.

Absolutely. Better still, I think the caching should be configurable
(one attribute controls all state caching). Note that currently setting
state always updates the cache.

> One more little nit - can we agree to stop adding / get rid of the
> _'s in front of variable names?

Happy to. I was just following the existing coding conventions.

Mark

> 
> Phil
> 
> On 5/10/11 4:27 PM, ma...@apache.org wrote:
>> Author: markt
>> Date: Tue May 10 23:27:13 2011
>> New Revision: 1101678
>>
>> URL: http://svn.apache.org/viewvc?rev=1101678&view=rev
>> Log:
>> Cache current values of autoCommit and readOnly so DB queries are not 
>> required for every call to the getter
>>
>> Modified:
>>     
>> commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/DelegatingConnection.java
>>
>> Modified: 
>> commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/DelegatingConnection.java
>> URL: 
>> http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/DelegatingConnection.java?rev=1101678&r1=1101677&r2=1101678&view=diff
>> ==============================================================================
>> --- 
>> commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/DelegatingConnection.java
>>  (original)
>> +++ 
>> commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/DelegatingConnection.java
>>  Tue May 10 23:27:13 2011
>> @@ -75,6 +75,10 @@ public class DelegatingConnection extend
>>  
>>      protected boolean _closed = false;
>>      
>> +    
>> +    private Boolean _autoCommitCached = null;
>> +    private Boolean _readOnlyCached = null;
>> +
>>      /**
>>       * Create a wrapper for the Connection which traces this
>>       * Connection in the AbandonedObjectPool.
>> @@ -344,9 +348,20 @@ public class DelegatingConnection extend
>>      { checkOpen(); try { _conn.commit(); } catch (SQLException e) { 
>> handleException(e); } }
>>      
>>      @Override
>> -    public boolean getAutoCommit() throws SQLException
>> -    { checkOpen(); try { return _conn.getAutoCommit(); } catch 
>> (SQLException e) { handleException(e); return false; } 
>> +    public boolean getAutoCommit() throws SQLException {
>> +        checkOpen();
>> +        if (_autoCommitCached != null) {
>> +            return _autoCommitCached.booleanValue();
>> +        }
>> +        try {
>> +            _autoCommitCached = Boolean.valueOf(_conn.getAutoCommit());
>> +            return _autoCommitCached.booleanValue();
>> +        } catch (SQLException e) {
>> +            handleException(e);
>> +            return false;
>> +        } 
>>      }
>> +
>>      @Override
>>      public String getCatalog() throws SQLException
>>      { checkOpen(); try { return _conn.getCatalog(); } catch (SQLException 
>> e) { handleException(e); return null; } }
>> @@ -375,9 +390,20 @@ public class DelegatingConnection extend
>>      { checkOpen(); try { return _conn.getWarnings(); } catch (SQLException 
>> e) { handleException(e); return null; } }
>>      
>>      @Override
>> -    public boolean isReadOnly() throws SQLException
>> -    { checkOpen(); try { return _conn.isReadOnly(); } catch (SQLException 
>> e) { handleException(e); return false; } }
>> -    
>> +    public boolean isReadOnly() throws SQLException {
>> +        checkOpen();
>> +        if (_readOnlyCached != null) {
>> +            return _readOnlyCached.booleanValue();
>> +        }
>> +        try {
>> +            _readOnlyCached = Boolean.valueOf(_conn.isReadOnly());
>> +            return _readOnlyCached.booleanValue();
>> +        } catch (SQLException e) {
>> +            handleException(e);
>> +            return false;
>> +        }
>> +    }
>> +
>>      @Override
>>      public String nativeSQL(String sql) throws SQLException
>>      { checkOpen(); try { return _conn.nativeSQL(sql); } catch (SQLException 
>> e) { handleException(e); return null; } }
>> @@ -387,16 +413,32 @@ public class DelegatingConnection extend
>>      { checkOpen(); try {  _conn.rollback(); } catch (SQLException e) { 
>> handleException(e); } }
>>      
>>      @Override
>> -    public void setAutoCommit(boolean autoCommit) throws SQLException
>> -    { checkOpen(); try { _conn.setAutoCommit(autoCommit); } catch 
>> (SQLException e) { handleException(e); } }
>> +    public void setAutoCommit(boolean autoCommit) throws SQLException {
>> +        checkOpen();
>> +        try {
>> +            _conn.setAutoCommit(autoCommit);
>> +            _autoCommitCached = Boolean.valueOf(autoCommit);
>> +        } catch (SQLException e) {
>> +            _autoCommitCached = null;
>> +            handleException(e);
>> +        }
>> +    }
>>  
>>      @Override
>>      public void setCatalog(String catalog) throws SQLException
>>      { checkOpen(); try { _conn.setCatalog(catalog); } catch (SQLException 
>> e) { handleException(e); } }
>>  
>>      @Override
>> -    public void setReadOnly(boolean readOnly) throws SQLException
>> -    { checkOpen(); try { _conn.setReadOnly(readOnly); } catch (SQLException 
>> e) { handleException(e); } }
>> +    public void setReadOnly(boolean readOnly) throws SQLException {
>> +        checkOpen();
>> +        try {
>> +            _conn.setReadOnly(readOnly);
>> +            _readOnlyCached = Boolean.valueOf(readOnly);
>> +        } catch (SQLException e) {
>> +            _readOnlyCached = null;
>> +            handleException(e);
>> +        }
>> +    }
>>  
>>      @Override
>>      public void setTransactionIsolation(int level) throws SQLException
>>
>>
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to