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