npgall / concurrent-trees

Concurrent Radix and Suffix Trees for Java
Apache License 2.0
511 stars 82 forks source link

Can we make the trees serializable? #4

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 9 years ago
The current implementation is not serializable. If we load a huge amount of 
data each time when starting, this may limit the usage. However, if it is 
serializable, we can load it once and serialize the entire tree onto the disk. 
During the start-up time, we only have to de-serialize it to load the whole 
tree quickly.

Original issue reported on code.google.com by j_yuz...@yahoo.com on 25 Mar 2013 at 2:29

GoogleCodeExporter commented 9 years ago
Yes this would be a good feature, I will look at adding support. Thanks.

Note: in the meantime, you could try the Kryo serialization library [1]. It can 
serialize objects which do not implement the Serializable interface. Let me 
know if it works!

[1] http://code.google.com/p/kryo/

Original comment by ni...@npgall.com on 25 Mar 2013 at 4:57

GoogleCodeExporter commented 9 years ago
Nope, Kryo doesn't work either. It complains about missing no-arg constructor 
on InvertedRadixTree when reading back.

Exception in thread "main" com.esotericsoftware.kryo.KryoException: Class 
cannot be created (missing no-arg constructor): 
com.googlecode.concurrenttrees.radixinverted.InvertedRadixTree
    at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1050)
    at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1062)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:228)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:217)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:626)
...

Original comment by j_yuz...@yahoo.com on 29 Mar 2013 at 9:16

GoogleCodeExporter commented 9 years ago
You'll need to configure kryo to use objenesis to deserialize immutable 
objects: http://code.google.com/p/kryo/#Object_creation

Original comment by ni...@npgall.com on 30 Mar 2013 at 8:28

w4nderlust commented 8 years ago

Upvote for this feature. It's really needed.

JohnnyC08 commented 8 years ago

Hey I saw you committed code to make this a reality. Any idea on when you're planning to release 2.5.0?

npgall commented 8 years ago

I'm planning to release 2.5.0 in the next 1-2 weeks :)

JohnnyC08 commented 8 years ago

My team and I are very excited!

visheshjoshi commented 8 years ago

@npgall Thanks for adding the serialization. Really needed for my project. I hope you release it soon. Is there a way to use a development build till you release the final build?

npgall commented 8 years ago

I have released 2.5.0. It should sync to Maven Central in ~2 hours.

npgall commented 8 years ago

Version 2.5.0 is now in Maven Central. Closing this issue.