-
Notifications
You must be signed in to change notification settings - Fork 155
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
Missing nonempty list in collection registration #227
Comments
We don't expect Chill serialization to be stable across jvm launches/recompiles so it should be fine to add it in to the natural place in the constructor. Would happily take a PR |
Could you please elaborate on the above statement "We don't expect Chill serialization to be stable across jvm launches/recompiles"? |
Chill was never designed to be used as a long term serialization format, since the underlying kryo itself wasn't really designed for this. Kryo has become a bit more stable over time in this regard but i'd still not recommend ever using kryo/chill as a long term format. The common place this is used as a magic/auto-serializer between hosts in a distributed system. Its used in Scalding/Spark/Summingbird for this, Storm uses kryo too iirc. |
Our use case spans Akka Distributed and Event Stores. |
Chill has no tests requiring these numbers are constant from build to build. So i think you can propose a different tack and all the tests here. But barring that if the tests don't require it I don't think you should rely on this. Using something like protobuf/thrift/etc.. that all aim for backwards compatibility/LTS. (Side note where I am now an online event store was done using chill/kryo for serialization persistance, and its been a total pain since we can't easily upgrade kryo in anything touching its classpath.) |
We do have these tests already. |
Well we have as our repos got bigger, more use cases. Your code paths can never touch another pre-compiled library using a newer kryo that isn't binary compatible unless your going down some shading or other routes. Anyway, its all a tradeoff/choice, just not one i'd recommend/make. It can be very hard to undo what you have serialized even to in memory stores. Kryo I don't think can/will necessarily validate what its deserialized isn't garbage too. |
The following will fail if registration is required:
This is because the collections list is missing
::
and only has the empty list:The fix is just to add list, but it needs to be added to the end or all of the registration numbers will change and it will break clients.
The text was updated successfully, but these errors were encountered: