[
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