tzaeschke / zoodb

ZooDB Object Database
Apache License 2.0
57 stars 9 forks source link

NPE in serializer #58

Closed tzaeschke closed 9 years ago

tzaeschke commented 9 years ago

Similar to issue #57, the NPE was caused by the data serializer:

java.lang.NullPointerException
    at org.zoodb.api.impl.ZooPC.jdoZooGetClassDef(ZooPC.java:286)
    at org.zoodb.internal.DataSerializer.writeClassInfo(DataSerializer.java:601)
    at org.zoodb.internal.DataSerializer.serializeObject(DataSerializer.java:359)
    at org.zoodb.internal.DataSerializer.serializeObject(DataSerializer.java:408)
    at org.zoodb.internal.DataSerializer.serializeFields2(DataSerializer.java:214)
    at org.zoodb.internal.DataSerializer.writeObject(DataSerializer.java:175)
    at org.zoodb.internal.model1p.DataSink1P.write(DataSink1P.java:108)
    at org.zoodb.internal.Session.commitInternal(Session.java:312)
    at org.zoodb.internal.Session.commit(Session.java:150)
    at org.zoodb.jdo.impl.TransactionImpl.commit(TransactionImpl.java:85)

See test Test_084_SerailizationBugs.testSerialization().

For the test description: Executing a query calls the OGT. Unfortunately, the OGT put all dirty objects on a seenObjects list, which was never deleted. In a subsequent run (i.e. the actual commit), the object (ProjectPC) was not checked again, even if it had been modified. This usually worked because: