ArrayIndexOutOfBoudsException in BasePage.getHeaderAtSlot accessing modified
Clob with READ_UNCOMMITTED isolation
-----------------------------------------------------------------------------------------------------------------
Key: DERBY-3811
URL: https://issues.apache.org/jira/browse/DERBY-3811
Project: Derby
Issue Type: Bug
Components: Store
Affects Versions: 10.5.0.0
Reporter: Kristian Waagan
Attachments: ClobStabilityTest.java
The attached Java program does the following, using two concurrent threads for
the last part.
a) Inserts a 1 MB Clob.
b) UpdateThread changes the Clob to a 0.5 MB Clob, then sleeps for 5 seconds
before it performs a rollback.
c) SelectThread selects the Clob and calls Clob.length().
Both threads/connections run with READ_UNCOMMITTED isolation and with
autocommit off.
Running the attached Java program results in the following exception:
1217602873292 :: Using isolation level READ_UNCOMMITTED (1)
1217602873341 :: <<UpdateThread>> Starting update.
1217602873649 :: <<UpdateThread>> Update completed!
1217602875305 :: <<SelectThread>> Executing select query...
1217602875328 :: <<SelectThread>> Getting Clob object...
java.sql.SQLException: Java exception: '-1:
java.lang.ArrayIndexOutOfBoundsException'.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:95)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
at
org.apache.derby.impl.jdbc.EmbedResultSet.noStateChangeException(EmbedResultSet.java:4386)
at
org.apache.derby.impl.jdbc.StoreStreamClob.noStateChangeLOB(StoreStreamClob.java:292)
at
org.apache.derby.impl.jdbc.StoreStreamClob.getCharLength(StoreStreamClob.java:170)
at org.apache.derby.impl.jdbc.EmbedClob.length(EmbedClob.java:175)
at ClobStabilityTest$SelectThread.myRun(ClobStabilityTest.java:102)
at ClobStabilityTest$SelectThread.run(ClobStabilityTest.java:87)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Java exception: '-1:
java.lang.ArrayIndexOutOfBoundsException'.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:119)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
... 10 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at
org.apache.derby.impl.store.raw.data.BasePage.getHeaderAtSlot(BasePage.java:1794)
at
org.apache.derby.impl.store.raw.data.StoredPage.restorePortionLongColumn(StoredPage.java:5816)
at
org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder(OverflowInputStream.java:151)
at
org.apache.derby.impl.store.raw.data.BufferedByteHolderInputStream.read(BufferedByteHolderInputStream.java:44)
at java.io.DataInputStream.read(DataInputStream.java:132)
at
org.apache.derby.impl.jdbc.PositionedStoreStream.read(PositionedStoreStream.java:106)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.derby.iapi.util.UTF8Util.internalSkip(UTF8Util.java:111)
at org.apache.derby.iapi.util.UTF8Util.skipUntilEOF(UTF8Util.java:59)
at
org.apache.derby.impl.jdbc.StoreStreamClob.getCharLength(StoreStreamClob.java:167)
... 4 more
1217602878848 :: <<UpdateThread>> Rolling back!
Is the Java program valid, and should this work?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.