Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-2597

inconsistent implementation of 'cumulative distribution function' for Exponential Distribution

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 0.8.1
    • None
    • None
    • Low

    Description

      As reported on the mailing list (http://mail-archives.apache.org/mod_mbox/cassandra-dev/201104.mbox/%3CAANLkTimdMSLE8-z0x+0kvzqp7za3AEMLaOFXvd4Z=tvc@mail.gmail.com%3E),

      I just found there are two implementations of 'cumulative distribution
      function' for Exponential Distribution and there are inconsistent :

      FailureDetector

      org.apache.cassandra.gms.ArrivalWindow.p(double)
         double p(double t)
         {
             double mean = mean();
             double exponent = (-1)*(t)/mean;
             return *Math.pow(Math.E, exponent)*;
         }
      

      DynamicEndpointSnitch

      org.apache.cassandra.locator.AdaptiveLatencyTracker.p(double)
         double p(double t)
         {
             double mean = mean();
             double exponent = (-1) * (t) / mean;
             return *1 - Math.pow( Math.E, exponent);*
         }
      

      According to the Exponential Distribution cumulative distribution function
      definition<http://en.wikipedia.org/wiki/Exponential_distribution#Cumulative_distribution_function>,
      the later one is correct

      ... however FailureDetector has been working as advertised for some time now. Does this mean the Snitch version is actually wrong?

      Attachments

        Activity

          People

            thepaul paul cannon
            jbellis Jonathan Ellis
            paul cannon
            Brandon Williams
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: