Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#63 Fault tolerant reading, if referential integrity is disabled

closed
Marco Schulze
None
9
2012-05-15
2012-04-06
Marco Schulze
No

The benchmark encountered this error:

Caused by: java.lang.IllegalStateException: DataEntry.getDataEntry(...) returned null for reference="936"!
at org.cumulus4j.store.ObjectContainerHelper.referenceToEntity(ObjectContainerHelper.java:135)
at org.cumulus4j.store.fieldmanager.FetchFieldManager.fetchObjectField(FetchFieldManager.java:355)
at org.datanucleus.state.AbstractStateManager.replacingObjectField(AbstractStateManager.java:2228)
at org.polepos.teams.jdo.data.ComplexHolder0.jdoReplaceField(ComplexHolder0.java)
at org.polepos.teams.jdo.data.ComplexHolder0.jdoReplaceFields(ComplexHolder0.java)
at org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1931)
at org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1958)
at org.cumulus4j.store.Cumulus4jPersistenceHandler.fetchObject(Cumulus4jPersistenceHandler.java:156)
at org.datanucleus.state.JDOStateManager.loadFieldsFromDatastore(JDOStateManager.java:1634)
at org.datanucleus.state.JDOStateManager.loadSpecifiedFields(JDOStateManager.java:1236)
at org.datanucleus.state.JDOStateManager.isLoaded(JDOStateManager.java:1724)
at org.polepos.teams.jdo.data.ComplexHolder0.jdoGetarray(ComplexHolder0.java)
at org.polepos.teams.jdo.data.ComplexHolder0.getArray(ComplexHolder0.java:196)
at org.polepos.teams.jdo.data.ComplexHolder0.internalTraverse(ComplexHolder0.java:163)
at org.polepos.teams.jdo.data.ComplexHolder0.internalTraverse(ComplexHolder0.java:161)
at org.polepos.teams.jdo.data.ComplexHolder0.traverse(ComplexHolder0.java:151)
at org.polepos.teams.jdo.ComplexJdo.delete(ComplexJdo.java:137)

No matter if this is a bug in the benchmark code or not: If referential integrity is disabled (and currently it always is, because it is not yet implemented), reading the data should be fault-tolerant, as a referenced object might have been deleted already and therefore the reference should be resolved with a WARN log message to null rather than throwing an exception.

Discussion

  • Marco Schulze
    Marco Schulze
    2012-05-15

    This is done (maybe not yet everywhere, but at least at the location documented by this stack trace.

     
  • Marco Schulze
    Marco Schulze
    2012-05-15

    • assigned_to: nobody --> nlmarco
    • status: open --> closed