You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <ji...@apache.org> on 2012/09/26 21:53:08 UTC

[jira] [Commented] (DERBY-3811) ArrayIndexOutOfBoundsException in BasePage.getHeaderAtSlot accessing modified Clob with READ_UNCOMMITTED isolation

    [ https://issues.apache.org/jira/browse/DERBY-3811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13464110#comment-13464110 ] 

Kathey Marsden commented on DERBY-3811:
---------------------------------------

Running the repro program against trunk, I get no errors:

/repro/derby-3811 $java ClobStabilityTest
348688920719 :: Using isolation level READ_UNCOMMITTED (1)
348688920774 :: <<UpdateThread>> Starting update.
348688920833 :: <<UpdateThread>> Update completed!
348688922779 :: <<SelectThread>> Executing select query...
348688922809 :: <<SelectThread>> Getting Clob object...
348688925931 :: <<SelectThread>> Clob length #1: 524288
348688925946 :: <<UpdateThread>> Rolling back!
348688935931 :: <<SelectThread>> Clob length #2: 524288

Is this issue now fixed? Any idea what might have fixed it?


                
> ArrayIndexOutOfBoundsException 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.1.1
>            Reporter: Kristian Waagan
>              Labels: derby_triage10_5_2
>         Attachments: ClobStabilityTest.java, derby-3811-1a-LOBLocksTest.diff, LOBLocksTest.html
>
>
> 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.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira