Details
-
Bug
-
Status: Done
-
Major
-
Resolution: Done
-
None
-
None
Description
We rely on the t-digest library version 3.1 and elasticsearch brings along 3.0. There is a small API incompatibility between the two versions (namely the static method TDigest.createAvlTreeDigest() is available in 3.1 but not 3.0).
If the classpath for the Stellar REPL chooses the 3.0 version of the library, then deserialization is broken.
Strictly speaking this is not a problem of the serialized form being incorrect, but a problem in the custom kryo serialization code in the class. It relies on the default constructor being called and then the digest being deserialized using the code within the t-digest library. Because the default constructor initializes the digest via a call that does not exist in 3.0, it breaks. The serialization logic is safe to use in both versions, but the object can't be constructed in 3.0.
This fix directly instantiates the AvlTreeDigest, which exists in both versions.
Attachments
Issue Links
- links to