db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3811) ArrayIndexOutOfBoundsException in BasePage.getHeaderAtSlot accessing modified Clob with READ_UNCOMMITTED isolation
Date Tue, 28 Jul 2009 19:18:14 GMT

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

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

I will ask the user  if I can post it here, but it may take a while to get a response.  In
the meanwhile if there is anything I can try with the database please let me know.  The table
had only 4 rows and one of the rows and the index was corrupt.  The corruption was in  a clob(10485760)
NOT NULL  column.  I have not yet been able to get much information on what was going on at
the time of the corruption, but my understanding is that this table holds somewhat transient
data. It usually has only a few rows that change frequently.  I am not sure if the changes
come only in the form of inserts and deletes or if there are updates as well.


> 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
>         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.


Mime
View raw message