[ 
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

        

Reply via email to