Issue #1080: Error 990 when querying a class with persistence-capable-superclass

Type: Bug ReoprtVersion: 2.5.4Priority: NormalStatus: ActiveReplies: 8
#1
[ObjectDB 2.4.7_07] Unexpected exception (Error 990)
  Generated by Java HotSpot(TM) Server VM 1.7.0_10 (on Linux 3.2.0-39-generic-pae).
Please report this error on http://www.objectdb.com/database/issue/new
com.objectdb.o.InternalException: null
com.objectdb.o.InternalException
    at com.objectdb.o.InternalException.f(InternalException.java:236)
    at com.objectdb.o.STA.K(STA.java:339)
    at com.objectdb.o.ENT.D(ENT.java:533)
    at com.objectdb.o.ENT.M(ENT.java:681)
    at com.objectdb.o.LDR.F(LDR.java:589)
    at com.objectdb.o.LDR.E(LDR.java:466)
    at com.objectdb.o.OBC.UJ(OBC.java:1102)
    at com.objectdb.o.QRR.f(QRR.java:220)
    at com.objectdb.jdo.JdoQuery.execute0(JdoQuery.java:811)
    at com.objectdb.jdo.JdoQuery.execute(JdoQuery.java:720)
    at com.spiffymap.jdo.JdoDaoBase.count(JdoDaoBase.java:143)

JdoDaoBase.java:143 is the last line of the following:

Query query = pm.newQuery();
query.setResult("count(this)");
query.setClass(myClass);
return (Long) query.execute();

All queries (eg ones with parameters) on the same class fail with the same error.

The code was working with the class in this case until I added a persistence-capable-superclass so I guess it's related to that.

#2

Thank you for this report.

Could you please provide a test case that reproduces the exception?

ObjectDB Support
#3

I don't have much time at the moment and simplifying a complex codebase into a simple test case which still fails with the same error is a lot of work. Looking at where the exception is being thrown, can you give me any clues as to what is likely to be involved, to help me with this work? Could it be because of the superclass, as I guessed? Or a failure of run-time enhancement? RDBMS-based JDO/JPA implementations use a discriminator column when concrete superclasses are involved - is that entirely transparent with ObjectDB?

#4

Unfortunately this stack trace does not provide much valuable information. The exception indicates some unexpected internal ObjectDB state, and the cause is unknown.

It happens during cleanup of query execution in a finally block. Maybe there is another problem that stops the query execution with another exception, but that other exception is hidden by this internal cleanup exception. You may find more information in the log file.

If you can make your application available to us (just jar/class files, no java files are needed) with instructions how to run it and reproduce the exception, isolating the problem into a small test case may not be needed.

ObjectDB Support
#5

Sorry, I'm no longer able to reproduce this problem at the moment.

#6
[2014-02-14 15:38:47 #1 *]
[ObjectDB 2.5.4] Unexpected exception (Error 990)
  Generated by Java HotSpot(TM) 64-Bit Server VM 1.7.0_17 (on Windows 7 6.1).
Please report this error on http://www.objectdb.com/database/issue/new
com.objectdb.o.InternalException: null
com.objectdb.o.InternalException
at com.objectdb.o.InternalException.f(InternalException.java:236)
at com.objectdb.o.STA.K(STA.java:339)
at com.objectdb.o.ENT.E(ENT.java:533)
at com.objectdb.o.ENT.N(ENT.java:681)
at com.objectdb.o.LDR.F(LDR.java:593)
at com.objectdb.o.LDR.E(LDR.java:470)
at com.objectdb.o.OBC.UO(OBC.java:1080)
at com.objectdb.o.QRR.f(QRR.java:220)
at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:716)
at com.sprecher.easyeng.dbservice.objectdb.ObjectDBRulesEngineDAOImpl.executeQuery(ObjectDBRulesEngineDAOImpl.java:239)
at com.sprecher.easyeng.rulesengine.test.RulesEngineTestSystem.checkRemoveObjectWithChildren(RulesEngineTestSystem.java:2189)
at com.sprecher.easyeng.rulesengine.test.RulesEngineTestSystem.test(RulesEngineTestSystem.java:254)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
#7

This exception is still a mystery, and any help in reproducing it will be highly appreciated.

ObjectDB Support
#8

I face this problem by multiple begin and commit transaction

 

IRule rule = new Rule();
  ...
 
  dbService.beginTrans();
  engine.addRule(rule);

   dbService.commitTrans();
  dbService.beginTrans();

  rule = new Rule();

....
  engine.addRule(rule);

  dbService.commitTrans();
#9

Will you be able to provide a test case that reproduces this exception?

ObjectDB Support

Reply