[ http://issues.apache.org/jira/browse/DERBY-654?page=all ]
Sunitha Kambhampati updated DERBY-654:
--------------------------------------
Other Info: [Patch available]
> unit/T_RawStoreFactory.unit fails with an assert failure in J2ME/CDC/FP
> -----------------------------------------------------------------------
>
> Key: DERBY-654
> URL: http://issues.apache.org/jira/browse/DERBY-654
> Project: Derby
> Type: Bug
> Components: Store, Regression Test Failure
> Versions: 10.2.0.0
> Environment: IBM WCTME5.7 j9 foundation VM
> Reporter: Deepa Remesh
> Priority: Minor
> Attachments: Derby654.stat.txt, derby654.diff.txt
>
> I am thinking this is a bug and opening a JIRA issue since I did not get any
> response to my question in derby-dev. One more thing I noticed is this test
> passes in 10.1 branch. It is failing only in trunk.
> The test unit/T_RawStoreFactory.unit fails with an assert failure in CDC/FP.
> This failure looks like an intermittent one though it is failing all the time
> now. I have run this test successfully some time back. I would like to find
> out if this is a bug (Derby or jvm) or just an intermittent failure. I am
> using j9 foundation from IBM WCTME5.7.
> ---------------------------------------------------------------------
> diff for the test:
> ---------------------------------------------------------------------
> < -- Unit Test T_RawStoreFactory finished
> 2 add
> > There should be 0 observers, but we still have 1 observers.
> > Shutting down due to unit test failure.
> ---------------------------------------------------------------------
> stack trace for AssertFailure in derby.log is:
> ---------------------------------------------------------------------
> FAIL - org.apache.derby.iapi.services.sanity.AssertFailure: ASSERT
> FAILED still on observer list
> [EMAIL PROTECTED]
> org.apache.derby.iapi.services.sanity.AssertFailure: ASSERT FAILED
> still on observer list
> [EMAIL PROTECTED]
> at
> org.apache.derby.iapi.services.sanity.SanityManager.THROWASSERT(SanityManager.java:150)
> at
> org.apache.derby.impl.store.raw.data.TruncateOnCommit.update(TruncateOnCommit.java:69)
> at java.util.Observable.notifyObservers(Observable.java:117)
> at
> org.apache.derby.iapi.store.raw.xact.RawTransaction.notifyObservers(RawTransaction.java:313)
> at org.apache.derby.impl.store.raw.xact.Xact.doComplete(Xact.java:1927)
> at
> org.apache.derby.impl.store.raw.xact.Xact.preComplete(Xact.java:1880)
> at
> org.apache.derby.impl.store.raw.xact.Xact.prepareCommit(Xact.java:726)
> at org.apache.derby.impl.store.raw.xact.Xact.commit(Xact.java:839)
> at org.apache.derby.impl.store.raw.xact.Xact.commit(Xact.java:636)
> at
> org.apache.derbyTesting.unitTests.store.T_Util.t_commit(T_Util.java:838)
> at
> org.apache.derbyTesting.unitTests.store.T_RawStoreFactory.TC001(T_RawStoreFactory.java:7435)
> at
> org.apache.derbyTesting.unitTests.store.T_RawStoreFactory.runTempTests(T_RawStoreFactory.java:420)
> at
> org.apache.derbyTesting.unitTests.store.T_RawStoreFactory.runTestSet(T_RawStoreFactory.java:247)
> at
> org.apache.derbyTesting.unitTests.harness.T_MultiIterations.runTests(T_MultiIterations.java:94)
> at
> org.apache.derbyTesting.unitTests.harness.T_MultiThreadedIterations.runTests(T_MultiThreadedIterations.java:91)
> at
> org.apache.derbyTesting.unitTests.harness.T_Generic.Execute(T_Generic.java:117)
> at
> org.apache.derbyTesting.unitTests.harness.BasicUnitTestManager.runATest(BasicUnitTestManager.java:183)
> at
> org.apache.derbyTesting.unitTests.harness.BasicUnitTestManager.runTests(BasicUnitTestManager.java:245)
> at
> org.apache.derbyTesting.unitTests.harness.BasicUnitTestManager.boot(BasicUnitTestManager.java:92)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:2008)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1846)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startServices(BaseMonitor.java:966)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.runWithState(BaseMonitor.java:398)
> at
> org.apache.derby.impl.services.monitor.FileMonitor.<init>(FileMonitor.java:59)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startMonitor(Monitor.java:288)
> at
> org.apache.derbyTesting.unitTests.harness.UnitTestMain.main(UnitTestMain.java:50)
> ---------------------------------------------------------------------
> On looking at the code, I did not understand how this assert failure can
> happen. The assert is thrown in following code in TruncateOnCommit:
> public void update(Observable obj, Object arg) {
> if (SanityManager.DEBUG) {
> if (arg == null)
> SanityManager.THROWASSERT("still on observer list " + this);
> }
> I am puzzled by how 'arg' can become null in this case. As I understand,
> 'update' method of each Observer gets called by the notifyObserver method in
> java.util.Observable class. notifyObserver passes 'arg', which describes the
> type of change, as the second argument to update. In this code path, 'arg'
> passed to notifyObserver is RawTransaction.COMMIT (which is not null).
> However the code has an assert to check for null value which means there is
> some situation where the 'arg' can become null. I have not understood what
> causes this situation but it is always being hit when running in this
> environment.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira