Claus Köll created JCR-3682:
-------------------------------

             Summary: If we get a unexpected exception from the jdbc driver 
it's possible create a unreleased VersioningLock
                 Key: JCR-3682
                 URL: https://issues.apache.org/jira/browse/JCR-3682
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core, transactions
    Affects Versions: 2.7.1, 2.6.4
            Reporter: Claus Köll
            Assignee: Claus Köll
             Fix For: 2.6.5, 2.7.2


If we get a unexpected exception from the jdbc driver the VersioningLock from 
the versionMgr.getXAResourceEnd() XAResource will never be released so the 
repository is locked forever. We should catch every Exception in 
BundleDbPersistenceManager.readBundle() to prevent that situation.

Following Stacktrace shows the problem ...
Caused by: java.lang.ArrayIndexOutOfBoundsException
        at 
oracle.jdbc.driver.T4CSocketInputStreamWrapper.readLongMSB(T4CSocketInputStreamWrapper.java:201)
        at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2374)
        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB4(T4CMAREngine.java:1310)
        at oracle.jdbc.driver.T4CTTIoer.unmarshal(T4CTTIoer.java:257)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:447)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
        at oracle.jdbc.driver.T4C8TTILob.read(T4C8TTILob.java:146)
        at oracle.jdbc.driver.T4CConnection.getBytes(T4CConnection.java:2392)
        at oracle.sql.BLOB.getBytes(BLOB.java:348)
        at 
oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:181)
        at 
oracle.jdbc.driver.OracleBufferedStream.readInternal(OracleBufferedStream.java:174)
        at 
oracle.jdbc.driver.OracleBufferedStream.read(OracleBufferedStream.java:143)
        at 
org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:75)
        at 
org.apache.commons.io.input.CountingInputStream.read(CountingInputStream.java:74)
        at java.io.DataInputStream.readFully(DataInputStream.java:189)
        at java.io.DataInputStream.readFully(DataInputStream.java:163)
        at 
org.apache.jackrabbit.core.persistence.util.BundleReader.readBytes(BundleReader.java:669)
        at 
org.apache.jackrabbit.core.persistence.util.BundleReader.readName(BundleReader.java:520)
        at 
org.apache.jackrabbit.core.persistence.util.BundleReader.readQName(BundleReader.java:469)
        at 
org.apache.jackrabbit.core.persistence.util.BundleReader.readBundleNew(BundleReader.java:194)
        at 
org.apache.jackrabbit.core.persistence.util.BundleReader.readBundle(BundleReader.java:145)
        at 
org.apache.jackrabbit.core.persistence.util.BundleBinding.readBundle(BundleBinding.java:152)
        at 
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.readBundle(BundleDbPersistenceManager.java:927)
        at 
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:889)
        at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundleCacheMiss(AbstractBundlePersistenceManager.java:766)
        at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:749)
        at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.storeInternal(AbstractBundlePersistenceManager.java:633)
        at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.store(AbstractBundlePersistenceManager.java:590)
        at 
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.store(BundleDbPersistenceManager.java:482)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:788)
        at 
org.apache.jackrabbit.core.state.XAItemStateManager.commit(XAItemStateManager.java:181)
        at 
org.apache.jackrabbit.core.TransactionContext.commit(TransactionContext.java:195)
        at 
org.apache.jackrabbit.core.XASessionImpl.commit(XASessionImpl.java:326)
        at 
org.apache.jackrabbit.jca.TransactionBoundXAResource.commit(TransactionBoundXAResource.java:49)
        at 
com.ibm.ejs.j2c.XATransactionWrapper.commit(XATransactionWrapper.java:490)



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to