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 "Mike Matrigali (Commented) (JIRA)" <ji...@apache.org> on 2011/10/03 21:06:34 UTC

[jira] [Commented] (DERBY-5422) IndexOutOfBoundsException followed by NullPointerException in cleanup during system.nstest

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

Mike Matrigali commented on DERBY-5422:
---------------------------------------

from looking at the run2.jar:
    o I think derby.log is saying that the problem is that we got an error in SequenceUpdater.clearIdentity and then while
       handling that error we got an java.lang.IndexOutOfBoundsException.  Unfortunately it looks like the original error gets lost
       when we get the IndexOutOfBoundsException.

My initial question is whose job should it be to catch and report the nested exception so that we could see what error is causing
cleanupOnError to be called and fail?  

So the interesting piece of code is SequenceUpdater.java, with some sort of failure in clean:

 public void clearIdentity()
 {
     try
     {
         clean( false );
     } catch (StandardException se)
     {
         //Doing check for lcc and db to be certain
         LanguageConnectionContext lcc = getLCC();
         if (lcc != null)
         {
             Database db = lcc.getDatabase();
             boolean isactive = (db != null ? db.isActive() : false);
             lcc.getContextManager().cleanupOnError(se, isactive);
         }
     }
 }
                
> IndexOutOfBoundsException followed by NullPointerException in cleanup during system.nstest 
> -------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5422
>                 URL: https://issues.apache.org/jira/browse/DERBY-5422
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.8.2.1
>         Environment: Windows XP, with ibm 1.6 SR9 FP1
>            Reporter: Myrna van Lunteren
>         Attachments: run2.jar, run7.jar
>
>
> During the embedded NsTest system test on windows XP I saw the following in derby.log:
> Tue Sep 13 16:25:03 PDT 2011:
> Booting Derby version The Apache Software Foundation - Apache Derby - 10.8.2.1 - (1170221): instance b779ce27-0132-6516-81e1-000000312348 
> on database directory D:\10.8.2.1\tst\restoredir\nstestdb  with class loader sun.misc.Launcher$AppClassLoader@40504050 
> Loaded from file:/D:/10.8.2.1/jars/derby.jar
> java.vendor=IBM Corporation
> java.runtime.version=jvmwi3260sr9-20110203_74623
> java.fullversion=JRE 1.6.0 IBM J9 2.4 Windows Server 2003 x86-32 jvmwi3260sr9-20110203_74623 (JIT enabled, AOT enabled)
> J9VM - 20110203_074623
> JIT  - r9_20101028_17488ifx3
> GC   - 20101027_AA
> user.dir=D:\10.8.2.1\tst
> derby.system.home=null
> New exception raised during cleanup Index: -1, Size: 15
> java.lang.IndexOutOfBoundsException: Index: -1, Size: 15
> 	at java.util.ArrayList.remove(ArrayList.java:552)
> 	at org.apache.derby.iapi.services.context.ContextManager.popContext(Unknown Source)
> 	at org.apache.derby.iapi.services.context.ContextImpl.popMe(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.destroy(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doRollback(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.internalRollback(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.cleanupOnError(Unknown Source)
> 	at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.sql.catalog.SequenceUpdater.clearIdentity(Unknown Source)
> 	at org.apache.derby.impl.services.cache.ConcurrentCache.removeEntry(Unknown Source)
> 	at org.apache.derby.impl.services.cache.ConcurrentCache.ageOut(Unknown Source)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.clearSequenceCaches(Unknown Source)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.clearCaches(Unknown Source)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.doneReading(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepareStorable(Unknown Source)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.compileStatement(Unknown Source)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(Unknown Source)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.DeleteResultSet.fireAfterTriggers(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.DeleteResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derbyTesting.system.nstest.utils.DbUtil.delete_one_row(DbUtil.java:452)
> 	at org.apache.derbyTesting.system.nstest.tester.TesterObject.doIUDOperation(TesterObject.java:175)
> 	at org.apache.derbyTesting.system.nstest.tester.Tester1.startTesting(Tester1.java:118)
> 	at org.apache.derbyTesting.system.nstest.NsTest.run(NsTest.java:551)
> Cleanup action completed
> New exception raised during cleanup null
> java.lang.NullPointerException
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.initRequiredPriv(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.resetContext(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.cleanupOnError(Unknown Source)
> 	at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derbyTesting.system.nstest.utils.DbUtil.delete_one_row(DbUtil.java:452)
> 	at org.apache.derbyTesting.system.nstest.tester.TesterObject.doIUDOperation(TesterObject.java:175)
> 	at org.apache.derbyTesting.system.nstest.tester.Tester1.startTesting(Tester1.java:118)
> 	at org.apache.derbyTesting.system.nstest.NsTest.run(NsTest.java:551)
> Tue Sep 13 16:25:12 PDT 2011 Thread[Thread 1,5,main] Equally severe exception raised during cleanup (ignored) null
> java.lang.NullPointerException
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.initRequiredPriv(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.resetContext(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CompilerContextImpl.cleanupOnError(Unknown Source)
> 	at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derbyTesting.system.nstest.utils.DbUtil.delete_one_row(DbUtil.java:452)
> 	at org.apache.derbyTesting.system.nstest.tester.TesterObject.doIUDOperation(TesterObject.java:175)
> 	at org.apache.derbyTesting.system.nstest.tester.Tester1.startTesting(Tester1.java:118)
> 	at org.apache.derbyTesting.system.nstest.NsTest.run(NsTest.java:551)
> Cleanup action completed
> It appears this caused the Tester1 thread to loose the connection:
> ---------------------
> Tester1Thread 1 dbUtil ----> During failure to execute delete stmt, exception thrown was : java.sql.SQLTransactionRollbackException: An internal error was identified by RawStore module.
> TObj -->At this point - executing delete_one_row(), exception thrown was : No current connection.
> java.sql.SQLNonTransientConnectionException: No current connection.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
> 	at org.apache.derbyTesting.system.nstest.utils.DbUtil.add_one_row(DbUtil.java:96)
> 	at org.apache.derbyTesting.system.nstest.tester.TesterObject.doIUDOperation(TesterObject.java:148)
> 	at org.apache.derbyTesting.system.nstest.tester.Tester1.startTesting(Tester1.java:118)
> 	at org.apache.derbyTesting.system.nstest.NsTest.run(NsTest.java:551)
> Caused by: java.sql.SQLException: No current connection.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
> 	... 12 more
> -------------------------------

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira