I am attempting to convert some previously written code (Freenet) to use db4o as a persistence layer. We serialise transactions on a single thread, and most classes can either be used persistently (with db4o) or non-persistently (without it). In various places in the code we use a new Object() as a synchronization tool. When we try ObjectContainer.set() on a larger object containing an Object, it throws a com.db4o.ext.ObjectNotStorableException. IMHO this is a simple check so should be fixable fairly easily.. but it may be that other parts of the code make similar assumptions.
INFO | jvm 1 | 2008/06/18 19:31:42 | com.db4o.ext.ObjectNotStorableException:
java.lang.Object@4f5f1ace
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.ClassMetadata.forObject(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.UntypedFieldHandler.write(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.marshall.ObjectMarshaller$2.processField(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.marshall.ObjectMarshaller.marshall(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.PartialObjectContainer.set(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.ExternalObjectContainer.set(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at com.db4o.internal.ExternalObjectContainer.set(Unknown Source)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.fcp.FCPClient.storeTo(FCPClient.java:386)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.fcp.FCPPersistentRoot.create(FCPPersistentRoot.java:36)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.fcp.FCPServer.<init>(FCPServer.java:128)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.fcp.FCPServer.maybeCreate(FCPServer.java:390)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.NodeClientCore.<init>(NodeClientCore.java:353)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.Node.<init>(Node.java:1578)
INFO | jvm 1 | 2008/06/18 19:31:42 | at freenet.node.NodeStarter.start(NodeStarter.java:159)
INFO | jvm 1 | 2008/06/18 19:31:42 | at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManager.java:2788)