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 Mon, 06 Jul 2009 18:21:15 GMT

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

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

A user reported an error similar to this selecting from a CLOB column, but in their case the
row is actually corrupt. If I select from their table with ij I get:
java.lang.ArrayIndexOutOfBoundsException: -1

	at org.apache.derby.impl.store.raw.data.BasePage.getHeaderAtSlot(BasePage.java:2013)

	at org.apache.derby.impl.store.raw.data.StoredPage.restorePortionLongColumn(StoredPage.java:5806)

	at org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder(OverflowInputStream.java:82)

	at org.apache.derby.impl.store.raw.data.OverflowInputStream.<init>(OverflowInputStream.java:64)

	at org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5555)

	at org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1499)

	at org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:498)

	at org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(GenericScanController.java:768)

	at org.apache.derby.impl.store.access.heap.HeapScan.fetchNextGroup(HeapScan.java:338)

	at org.apache.derby.impl.sql.execute.BulkTableScanResultSet.reloadArray(BulkTableScanResultSet.java:329)

	at org.apache.derby.impl.sql.execute.BulkTableScanResultSet.getNextRowCore(BulkTableScanResultSet.java:284)

	at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:475)

	at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:448)

	at org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:392)

	at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:382)

	at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:338)

	at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:241)

	at org.apache.derby.tools.JDBCDisplayUtil.DisplayResults(JDBCDisplayUtil.java:229)

	at org.apache.derby.impl.tools.ij.utilMain.displayResult(utilMain.java:456)

	at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:530)

	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:371)

	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:269)

	at org.apache.derby.impl.tools.ij.Main.go(Main.java:204)

	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:170)

	at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)

	at org.apache.derby.tools.ij.main(ij.java:71)


I do not yet have a description of what they were doing that led up to the corruption, but
apparently  they have seen this type of corruption before with this application.  Any ideas
what could cause it?  This is actually occurring with 10.2.  Does it look related to this
issue or look like something else?



> 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