[
https://issues.apache.org/jira/browse/METRON-610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15722465#comment-15722465
]
ASF GitHub Bot commented on METRON-610:
---------------------------------------
GitHub user cestella opened a pull request:
https://github.com/apache/incubator-metron/pull/388
METRON-610: OnlineStatisticsProvider serialization is broken at random in
the REPL
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 (we use t-digest's custom
serialization), 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.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/cestella/incubator-metron
stats_serialization_bug
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-metron/pull/388.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #388
----
commit 8c8175e607fe769c7f84ca390e772b6a56dfaa7e
Author: cstella <[email protected]>
Date: 2016-12-05T14:46:47Z
t-digest library between 3.0 and 3.1 have different APIs but both treat the
AVL Tree library the same, so adjusting the call should allow us to support
either version.
----
> OnlineStatisticsProvider serialization is broken at random in the REPL
> ----------------------------------------------------------------------
>
> Key: METRON-610
> URL: https://issues.apache.org/jira/browse/METRON-610
> Project: Metron
> Issue Type: Bug
> Reporter: Casey Stella
> Assignee: Casey Stella
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> 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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)