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)