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: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to