Issue #2399: Internal objectdb exception when using different language on a machine

Type: Bug ReoprtVersion: 2.7.6Priority: HighStatus: ClosedReplies: 8
#1

Hello,

we got following internal objectdb exception from our customer.
Can you explain the exception?

The database was used with ObjectDB version 2.7.3, probably on a machine with englisch language.

After that the database is used with version 2.7.6 on a machine with german language and our customer got the exception.

best regards
BTC

2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION: Caused by: com.objectdb.o.InternalException
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.TYM.x(TYM.java:759)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.MUT.f(MUT.java:661)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.MUT.k(MUT.java:529)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.MUT.readAndAdjust(MUT.java:410)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.UMR.readAndAdjust(UMR.java:658)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.vector.bl.internal.dmos.folder.VectorContainerImpl.__odbReadContent(VectorContainerImpl.java:1)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.analysis.bl.internal.dmos.TestCaseImpl.__odbReadContent(TestCaseImpl.java:1)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.analysis.test.bl.internal.dmos.RequirementBasedTestCaseImpl.__odbReadContent(RequirementBasedTestCaseImpl.java:1)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.MMM.I(MMM.java:1207)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.UTY.K(UTY.java:1505)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.UTY.L(UTY.java:1432)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.ENH.d(ENH.java:104)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.LDR.d(LDR.java:836)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.LDR.n(LDR.java:224)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.OBC.ab(OBC.java:1085)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.OBC.ai(OBC.java:990)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.OBC.Yu(OBC.java:800)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.SRB.a(SRB.java:162)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRR.h(QRR.java:565)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRR.i(QRR.java:225)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:721)
2019-01-29 08:34:54 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.base.dal.internal.services.PersistenceUtilityServiceImpl.getModelElementsByClass(PersistenceUtilityServiceImpl.java:267)

 

#2

The exception indicates an issue with an internal reference to a type id that doesn't exist. Could you please check the database file with the Doctor for errors?

It is unclear how and if this could be related to switching a language.

ObjectDB Support
#3

Hello,

and we still have also second exception.

Has this exception the same reason as the first exception above?

best regards

BTC

2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION: Caused by: com.objectdb.o.InternalException: Unexpected internal exception
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.JPE.e(JPE.java:170)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.ERR.h(ERR.java:66)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.OBC.onObjectDBError(OBC.java:1582)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:733)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.base.dal.internal.services.PersistenceUtilityServiceImpl.getModelElementsByClass(PersistenceUtilityServiceImpl.java:267)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.profilemigration.migrators.FTResultVectorToExecRecMigrator.migrate(FTResultVectorToExecRecMigrator.java:54)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.profilemigration.application.internal.services.ProfileMigrationImpl.callMigrators(ProfileMigrationImpl.java:239)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.btc.ep.profilemigration.application.internal.services.ProfileMigrationImpl.do_migrateProfile(ProfileMigrationImpl.java:212)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     ... 15 more
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION: Caused by: java.lang.NullPointerException
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.VAR.J(VAR.java:299)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.VAR.ZD(VAR.java:261)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.SYR.l(SYR.java:517)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRC.j(QRC.java:194)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRM.Za(QRM.java:273)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.MST.Za(MST.java:1003)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.WRA.Za(WRA.java:313)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.WSM.Za(WSM.java:117)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRR.k(QRR.java:260)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.o.QRR.i(QRR.java:154)
2019-01-29 10:12:02 - [ModalContext] ERROR com.btc.ep.base.dal.MigrationUtility - PROFILE MIGRATION:     at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:721)
#4

Hello,

a hint that we get only exceptions, if the windows 7 installation is a german or a japanese installation.

But if we use a windows 7 english installation then we have no problems.

Have you any idea why the ObjectDB has a strange behavior on different installations?

#5

The new stack trace in #3 is different. It is again a type issue. But this time an unexpected situation during query execution of a type with a missing or partial representation in the database. It is possible that the two exceptions could be related.

Thank you for this report and for the tip regarding OS languages. The information that you submitted indicates that this is probably an ObjectDB bug. However, to explore it further we will need your help.

  1. Are you sure that the only difference between a successful run and a failure run is the OS language? i.e. Have you tried the same database, same versions of your software and ObjectDB, and the same tests on both OS, and got different results?
  2. Has anything changed recently? Is it the first time that this OS is used with your software and ObjectDB?
  3. Is there any additional information in the ObjectDB log files?
  4. Could you submit a test that can reproduce and demonstrate the exception?
ObjectDB Support
#6

Hello,

we figured out the issue. One of our jar bundle with entities was not enhanced and caused the exceptions above. Although the enhancement check was activated: <enhancement agent="false" reflection="error" /> the enhancement check does not throw an objectdb exception.

Have you an idea why the enhancement check does not throw an objectdb exception?

best regards
BTC

 

#7

Good to hear that you found the cause and thank you for the update.

> Have you an idea why the enhancement check does not throw an objectdb exception?

This may be caused due to partial enhancement, in a which a super class is enhanced and a subclass is not enhanced, as currently the check for enhancement is based on checking that every entity class implements a special enhancement interface.

If you can confirm that this is the case (i.e. an enhanced super class and a non enhanced subclass) we should explore ways to improve the check to identify and warn against partial enhancement in future versions.

ObjectDB Support
#8

Hello,

we have to two databases.

The main database contains the schemas of all entities, also of the entities of the sub database.
The main database has also an entity 'TCVectorImpl' which implements the interface TCVector, this entity is not used in the sub database.

The sub database contains only a restricted schema, here we have the only one not enhanced entity 'TCVector' (is not identical with the TCVector interface of main database).

We executed a query on the main database for entity FTResultImpl, which is not used in the sub database and we got the exception above, although the entity FTResultImpl is enhanced and also dependend entities, and the entities like TCVector of the sub database are not involved in the query.

I hadn't expected an exception in this case.

best regards

BTC

#9

Maybe the problem is due to having two different TCVector classes?

Can you share this database so we can investigate this exception and check for possible solutions? Is it possible to reproduce the exception by a query in the Explorer?

ObjectDB Support

Reply