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

Rick Hillegas commented on DERBY-5428:
--------------------------------------

This may be another example of the harmless, but confused state of the 
SequenceUpdater which was fixed by the work on DERBY-5389. That work was 
committed to the 10.8 branch at revision 1172620 after the 10.8.2.1 candidate 
was built (at revision 1170221). The stack trace is different because 
SequenceUpdater.setIdentity() is being called to generate an identity rather 
than a sequence.

Other than the problem fixed by DERBY-5389, I don't see any other ways that the 
internal state of the SequenceUpdater could be confused in this fashion. 
However, I can't promise that there isn't another code path which I'm not 
clever enough to see.

It might be useful to see if you can reproduce this problem against the current 
head of the 10.8 branch. Thanks.

> ns test error: ERROR 38000:  The exception 
> 'org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Identity 
> being changed on a live cacheable. Old uuidString = 
> 846c00a0-0132-88d8-fec0-000000080920' was thrown while evaluating an 
> expression
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5428
>                 URL: https://issues.apache.org/jira/browse/DERBY-5428
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.8.2.1
>         Environment: Windows XP, ibm 16 sr 9 fp1, with modified 
> derbyTesting.jar (ps2.close & print exception reversed as suggested in 
> DERBY-5421)
>            Reporter: Myrna van Lunteren
>
> In an attempt to reproduce DERBY-5421/ DERBY-5422/ DERBY-5423  and get more 
> information, I ran the nstest (embedded on another Windows machine, with the 
> same jvm version, but with the following setup:
> - sane jars from the 10.8.2.1 RC2 (rev 1170221) 
> - derbyTesting.jar built (sane) at the same level, but with modifications to 
> put ps2.close() in Dbutil after the exception print
> - the following details in a derby.properties file:
>   derby.language.logStatementText=true
>   derby.stream.error.logSeverityLevel=0
>   derby.language.sequence.preallocator=200
> This time, so far, I only see the following unexpected error:
> (in derby.log:)  ERROR 38000: The exception 
> 'org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Identity 
> being changed on a live cacheable. Old uuidString = 
> 846c00a0-0132-88d8-fec0-000000080920' was thrown while evaluating an 
> expression
> This looks like DERBY-5389, but it has a different stack trace and happens 
> with ibm 1.6:
> ------------------------------------------------------------------
> Tue Sep 20 15:04:06 PDT 2011 Thread[Thread 3,5,main] (XID = 58789), 
> (SESSIONID = 22), (DATABASE = nstestdb), (DRDAID = null), Begin compiling 
> prepared statement:  update nstesttab set t_double = ?  where serialkey = 
> 36027 :End prepared statement
> --
> ERROR 38000: The exception 
> 'org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Identity 
> being changed on a live cacheable. Old uuidString = 
> 846c00a0-0132-88d8-fec0-000000080920' was thrown while evaluating an 
> expression.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:296)
>       at 
> org.apache.derby.iapi.error.StandardException.unexpectedUserException(StandardException.java:583)
>       at 
> org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:164)
>       at 
> org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(RowResultSet.java:148)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java:185)
>       at 
> org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:127)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:515)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1686)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:308)
>       at 
> org.apache.derbyTesting.system.nstest.utils.DbUtil.add_one_row(DbUtil.java:201)
>       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: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED 
> Identity being changed on a live cacheable. Old uuidString = 
> 846c00a0-0132-88d8-fec0-000000080920
>       at 
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
>       at 
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
>       at 
> org.apache.derby.impl.sql.catalog.SequenceUpdater.setIdentity(SequenceUpdater.java:272)
>       at 
> org.apache.derby.impl.services.cache.ConcurrentCache.find(ConcurrentCache.java:295)
>       at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getCurrentValueAndAdvance(DataDictionaryImpl.java:10352)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.getSetAutoincrementValue(InsertResultSet.java:824)
>       at 
> org.apache.derby.impl.sql.execute.BaseActivation.getSetAutoincrementValue(BaseActivation.java:666)
>       at 
> org.apache.derby.exe.ac092d4de3x0132x88d8xfec0x0000000809207.e0(Unknown 
> Source)
>       at 
> org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:139)
>       ... 13 more
> ============= begin nested exception, level (1) ===========
> org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Identity 
> being changed on a live cacheable. Old uuidString = 
> 846c00a0-0132-88d8-fec0-000000080920
>       at 
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
>       at 
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
>       at 
> org.apache.derby.impl.sql.catalog.SequenceUpdater.setIdentity(SequenceUpdater.java:272)
>       at 
> org.apache.derby.impl.services.cache.ConcurrentCache.find(ConcurrentCache.java:295)
>       at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getCurrentValueAndAdvance(DataDictionaryImpl.java:10352)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.getSetAutoincrementValue(InsertResultSet.java:824)
>       at 
> org.apache.derby.impl.sql.execute.BaseActivation.getSetAutoincrementValue(BaseActivation.java:666)
>       at 
> org.apache.derby.exe.ac092d4de3x0132x88d8xfec0x0000000809207.e0(Unknown 
> Source)
>       at 
> org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:139)
>       at 
> org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(RowResultSet.java:148)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java:185)
>       at 
> org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:127)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:515)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1686)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:308)
>       at 
> org.apache.derbyTesting.system.nstest.utils.DbUtil.add_one_row(DbUtil.java:201)
>       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.derby.iapi.error.StandardException.newException(StandardException.java:286)
>       at org.apache.derby.iapi.types.SQLDecimal.setWidth(SQLDecimal.java:1063)
>       at org.apache.derby.iapi.types.SQLDecimal.normalize(SQLDecimal.java:759)
>       at 
> org.apache.derby.iapi.types.DataTypeDescriptor.normalize(DataTypeDescriptor.java:648)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeColumn(NormalizeResultSet.java:329)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeRow(NormalizeResultSet.java:373)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java:188)
>       at 
> org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:127)
>       at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:440)
>       at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:264)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1686)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:308)
>       at 
> org.apache.derbyTesting.system.nstest.utils.DbUtil.update_one_row(DbUtil.java:382)
>       at 
> org.apache.derbyTesting.system.nstest.tester.TesterObject.doIUDOperation(TesterObject.java:162)
>       at 
> org.apache.derbyTesting.system.nstest.tester.Tester1.startTesting(Tester1.java:118)
>       at org.apache.derbyTesting.system.nstest.NsTest.run(NsTest.java:551)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to