Hello,
we get an Unexpected internal exception and have no idea what goes wrong.
We can reproduce (mostly) the error in a very big use case. In the big use case and we create and persist millions of SignalValueImpl objects (Embeddables). Partly as in the stack trace an Embeddable contain another Embeddable.
It seems like that we can't reproduce the problem in smaller use cases with less objects.
Stack trace:
com.objectdb.o.InternalException: Unexpected internal exception at com.objectdb.o.JPE.h(JPE.java:168) ~[na:na] at com.objectdb.o.ERR.f(ERR.java:66) ~[na:na] at com.objectdb.o.OBC.onObjectDBError(OBC.java:1556) ~[na:na] at com.objectdb.o.ENT.al(ENT.java:1676) ~[na:na] at com.objectdb.o.ENT.beforeModifyEmbedded(ENT.java:1217) ~[na:na] at com.objectdb.o.EMT.beforeModifyMember(EMT.java:175) ~[na:na] at com.btc.ep.architecture.bl.internal.dmos.values.SignalValueImpl.__odbSet_originalValue(SignalValueImpl.java:1) ~[na:na] at com.btc.ep.architecture.bl.internal.dmos.values.SignalValueImpl.clearOriginalValue(SignalValueImpl.java:52) ~[na:na] at com.btc.ep.architecture.bl.internal.dmos.values.IntegerSignalValueImpl.setValue(IntegerSignalValueImpl.java:39) ~[na:na] at com.btc.ep.architecture.bl.internal.dmos.values.FixedPointSignalValueImpl.setValue(FixedPointSignalValueImpl.java:92) ~[na:na] at com.btc.ep.architecture.bl.internal.dmos.values.FixedPointSignalValueImpl.setSignalValueAsDouble(FixedPointSignalValueImpl.java:188) ~[na:na] at com.btc.ep.vector.db.bl.internal.services.DBVectorServiceImpl.setValue(DBVectorServiceImpl.java:178) ~[na:na] (...A few lines hidden...) at com.btc.ep.atg4req.ui.wizard.Atg4ReqExecutionJob$1.run(Atg4ReqExecutionJob.java:52) [com.btc.ep.atg4req.ui_12.0.0.201606221703.jar:na] at java.lang.Thread.run(Unknown Source) [na:1.8.0_51] Caused by: java.lang.ArrayIndexOutOfBoundsException: 3 at com.objectdb.o.MMM.J(MMM.java:630) ~[na:na] at com.objectdb.o.ENT.beforeModifyEmbedded(ENT.java:1213) ~[na:na] ... 25 common frames omitted
Stripped implementation of SignalValueImpl
import javax.persistence.Basic; import javax.persistence.Embeddable; import com.btc.ep.architecture.bl.dmos.values.SignalValue; /** */ @Embeddable public class SignalValueImpl implements SignalValue { @Basic private boolean defined; @Basic String originalValue; /** * Constructs a new instance whose value is currently undefined. */ public SignalValueImpl() { defined = false; } /** * Clear the content of the originalString. * * <p>The OriginalValue must be cleared if the value has been changed. * That can be done by this method.</p> */ protected void clearOriginalValue() { originalValue = null; } }
Can you read the problem from the stack trace?