commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 31457] New: - Transaction conflicts in Oracle will corrupt prepared statements in the dbcp pool.
Date Tue, 28 Sep 2004 20:18:50 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=31457>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=31457

Transaction conflicts in Oracle will corrupt prepared statements in the dbcp pool.

           Summary: Transaction conflicts in Oracle will corrupt prepared
                    statements in the dbcp pool.
           Product: Commons
           Version: 1.2 Final
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: Dbcp
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: ttps@pacbell.net


If a prepared statement fails due to a transaction conflict 
(i.e., ORA-08177 sqlState 72000: can't serialize access for this transaction, 
or ORA-00060 sqlState 61000: deadlock detected while waiting for resource), 
the copy of this prepared statement in the pool will become corrupted and cause 
an NPE the next time it is called.

java.lang.NullPointerException
	at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers
(OraclePreparedStatement.java:2609)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch
(OraclePreparedStatement.java:10240)
	at org.apache.commons.dbcp.DelegatingStatement.executeBatch
(DelegatingStatement.java:294)
	at org.apache.commons.dbcp.DelegatingStatement.executeBatch
(DelegatingStatement.java:294)
	at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch
(BatchingBatcher.java:54)
	at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:126)
	at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2440)
	at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2391)
	at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2259)
	at com.talisar.hibernate.ThreadLocalSession.flush
(ThreadLocalSession.java:293)
	at com.talisar.hibernate.ThreadLocalSession.txCommit
(ThreadLocalSession.java:281)
	at test.TestConflict$T1.run(TestConflict.java:65)
	at java.lang.Thread.run(Thread.java:534)


This problem exists ONLY when dbcp is configured with 
poolPreparedStatements=true.

Environment:
    Transaction Isolation: 8 (serializable)
    j2sdk: 1.4.2
    tomcat: 5.0.28
    oracle: 9.2.0.1
    jdbc driver: ojdbc14_g.jar with orai18n.jar
    dbcp: commons-dbcp-1.2.1.jar with commons-pool-1.2.jar
    hibernate: 2.1

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


Mime
View raw message