Uploaded image for project: 'Metron (Retired)'
  1. Metron (Retired)
  2. METRON-610

OnlineStatisticsProvider serialization is broken at random in the REPL

Details

    • Bug
    • Status: Done
    • Major
    • Resolution: Done
    • None
    • 0.3.1
    • 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

          Activity

            People

              cestella Casey Stella
              cestella Casey Stella
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 1h
                  1h
                  Remaining:
                  Remaining Estimate - 1h
                  1h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified

                  Slack

                    Issue deployment