Issue #796: [ObjectDB 2.3.7_25] Unexpected exception (Error 990)

Type: Bug ReoprtVersion: 1.4.0Priority: NormalStatus: FixedReplies: 4
#1

java -cp objectdb.jar com.objectdb.Doctor ~/athene.odb.old ~/new.old

[...]

Creating a database copy...
[ObjectDB 2.3.7_25] Unexpected exception (Error 990)
  Generated by Java HotSpot(TM) 64-Bit Server VM 1.6.0_31 (on Mac OS X 10.7.4).
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.VUT.p(VUT.java:846)
at com.objectdb.o.VUT.m(VUT.java:721)
at com.objectdb.o.VUT.l(VUT.java:704)
at com.objectdb.o.VUT.p(VUT.java:807)
at com.objectdb.o.VUT.m(VUT.java:721)
at com.objectdb.o.DRH.h(DRH.java:305)
at com.objectdb.o.DRH.g(DRH.java:220)
at com.objectdb.o.DMR.P(DMR.java:783)
at com.objectdb.o.DMR.P(DMR.java:721)
at com.objectdb.o.DMR.D(DMR.java:286)
at com.objectdb.o.DMR.B(DMR.java:163)
at com.objectdb.Doctor.main(Doctor.java:22)

[ObjectDB 2.3.7_25] null

#2

There is a problem with 2 Person instances, apparently in their salt byte[] array.

There was a change in the way byte[] arrays are stored in ObjectDB. In theory this should not affect existing databases, but still if the database was created by an old version of ObjectDB (before 2.3.0) maybe it is related.

It will be easy to generate a new ObjectDB build in which the Doctor will report the problems with these 2 Person instances without throwing an exception, but fixing these instances may be more complicated.

There are also other errors in that specific database, so after using the new build, please check your databases with the Doctor occasionally and report issues, if any.

ObjectDB Support
#3

Build 2.4.0_02 fixes the Doctor as explained above.

ObjectDB Support
#4

I tried the new version, but the doctor still crashes:

Creating a database copy...
[ObjectDB 2.4.0_02] Unexpected exception (Error 990)
  Generated by Java HotSpot(TM) 64-Bit Server VM 1.6.0_31 (on Mac OS X 10.7.4).
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.VUT.p(VUT.java:846)
at com.objectdb.o.VUT.m(VUT.java:721)
at com.objectdb.o.VUT.l(VUT.java:704)
at com.objectdb.o.VUT.p(VUT.java:807)
at com.objectdb.o.VUT.m(VUT.java:721)
at com.objectdb.o.DRH.h(DRH.java:305)
at com.objectdb.o.DRH.g(DRH.java:220)
at com.objectdb.o.DMR.P(DMR.java:783)
at com.objectdb.o.DMR.P(DMR.java:721)
at com.objectdb.o.DMR.D(DMR.java:286)
at com.objectdb.o.DMR.B(DMR.java:163)
at com.objectdb.Doctor.main(Doctor.java:22)

[ObjectDB 2.4.0_02] null

#5

You are right. The previous fix handled only diagnosis mode and a new fix (in build 2.4.0_03) should also handle repair mode. However, the Doctor doesn't fix these 2 damaged objects, and better understanding of the situation that caused these objects to be stored in bad format is still required.

ObjectDB Support

Reply