Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recursive LinkSet/LinkList error #22

Open
dimparf opened this issue Jun 2, 2016 · 3 comments
Open

Recursive LinkSet/LinkList error #22

dimparf opened this issue Jun 2, 2016 · 3 comments
Labels

Comments

@dimparf
Copy link
Owner

dimparf commented Jun 2, 2016

If I create OClasses with recursive dependencies I have error:
Example User(@linkset subscriptions: Set[Place]) and Place(@linkset subscribers: Set[User])
java.lang.StackOverflowError
at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:153)
at java.lang.StringCoding.decode(StringCoding.java:193)
at java.lang.String.(String.java:426)
at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.stringFromBytes(ORecordSerializerBinaryV0.java:815)
at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.readString(ORecordSerializerBinaryV0.java:772)
at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.readSingleValue(ORecordSerializerBinaryV0.java:304)
at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.deserializePartial(ORecordSerializerBinaryV0.java:143)
at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinary.fromStream(ORecordSerializerBinary.java:72)
at com.orientechnologies.orient.core.record.impl.ODocument.deserializeFields(ODocument.java:1817)
at com.orientechnologies.orient.core.record.impl.ODocument.checkForFields(ODocument.java:2413)
at com.orientechnologies.orient.core.record.impl.ODocument.rawField(ODocument.java:767)
at com.orientechnologies.orient.core.record.impl.ODocument.field(ODocument.java:792)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry$$anonfun$com$emotioncity$soriento$loadbyname$ClassNameReadersRegistry$$toFieldReader$3.apply(ClassNameReadersRegistry.scala:190)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry$$anonfun$com$emotioncity$soriento$loadbyname$ClassNameReadersRegistry$$toFieldReader$3.apply(ClassNameReadersRegistry.scala:190)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor$$anonfun$1.apply(ClassNameReadersRegistry.scala:43)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor$$anonfun$1.apply(ClassNameReadersRegistry.scala:43)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor.apply(ClassNameReadersRegistry.scala:43)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor.apply(ClassNameReadersRegistry.scala:33)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry.createClassByDocumentClassName(ClassNameReadersRegistry.scala:141)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry$$anonfun$getValueMapperForRead$4.apply(ClassNameReadersRegistry.scala:264)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry$$anonfun$com$emotioncity$soriento$loadbyname$ClassNameReadersRegistry$$toFieldReader$3.apply(ClassNameReadersRegistry.scala:190)
at com.emotioncity.soriento.loadbyname.ClassNameReadersRegistry$$anonfun$com$emotioncity$soriento$loadbyname$ClassNameReadersRegistry$$toFieldReader$3.apply(ClassNameReadersRegistry.scala:190)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor$$anonfun$1.apply(ClassNameReadersRegistry.scala:43)
at com.emotioncity.soriento.loadbyname.DocumentFromConstructor$$anonfun$1.apply(ClassNameReadersRegistry.scala:43)

@dimparf dimparf added the bug label Jun 2, 2016
@allComputableThings
Copy link

allComputableThings commented Jul 7, 2016

Fixing this is a little tricky. A temporary entry need to be entered into the type readers registry so that if its re-visited, its not re-added and the reference is re-used.

@allComputableThings
Copy link

... and similarly, when creating OClasses, need to remember what's already been created.

Before working on it, should check: does ODB allow recursive type definition is general?

@dimparf
Copy link
Owner Author

dimparf commented Jul 7, 2016

Stuart, This error occurs when selecting objects from db. ODB is allow recursive type definition.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants