Author: brandonwilliams
Date: Mon May 23 19:43:53 2011
New Revision: 1126682

URL: http://svn.apache.org/viewvc?rev=1126682&view=rev
Log:
Simplify FD/DES calculations.
Patch by Paul Cannon, reviewed by brandonwilliams for CASSANDRA-2597

Modified:
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=1126682&r1=1126681&r2=1126682&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java
 Mon May 23 19:43:53 2011
@@ -200,6 +200,12 @@ class ArrivalWindow
     private double tLast_ = 0L;
     private BoundedStatsDeque arrivalIntervals_;
 
+    // this is useless except to provide backwards compatibility in 
phi_convict_threshold,
+    // because everyone seems pretty accustomed to the default of 8, and users 
who have
+    // already tuned their phi_convict_threshold for their own environments 
won't need to
+    // change.
+    private final double PHI_FACTOR = 1.0 / Math.log(10.0);
+
     ArrivalWindow(int size)
     {
         arrivalIntervals_ = new BoundedStatsDeque(size);
@@ -249,26 +255,16 @@ class ArrivalWindow
     {
         arrivalIntervals_.clear();
     }
-    
-    double p(double t)
-    {
-        double mean = mean();
-        double exponent = (-1)*(t)/mean;
-        return Math.pow(Math.E, exponent);
-    }
-    
+
+    // see CASSANDRA-2597 for an explanation of the math at work here.
     double phi(long tnow)
-    {            
+    {
         int size = arrivalIntervals_.size();
-        double log = 0d;
-        if ( size > 0 )
-        {
-            double t = tnow - tLast_;                
-            double probability = p(t);       
-            log = (-1) * Math.log10( probability );                            
     
-        }
-        return log;           
-    } 
+        double t = tnow - tLast_;
+        return (size > 0)
+               ? PHI_FACTOR * t / mean()
+               : 0.0;
+    }
     
     public String toString()
     {

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java?rev=1126682&r1=1126681&r2=1126682&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
 Mon May 23 19:43:53 2011
@@ -274,7 +274,6 @@ public class DynamicEndpointSnitch exten
 class AdaptiveLatencyTracker extends AbstractStatsDeque
 {
     private final LinkedBlockingDeque<Double> latencies;
-    private static final double SENTINEL_COMPARE = 0.0001; // arbitrary; as 
long as it is the same across hosts it doesn't matter
 
     AdaptiveLatencyTracker(int size)
     {
@@ -312,22 +311,9 @@ class AdaptiveLatencyTracker extends Abs
         return latencies.size();
     }
 
-    double p(double t)
-    {
-        double mean = mean();
-        double exponent = (-1) * (t) / mean;
-        return 1 - Math.pow( Math.E, exponent);
-    }
-
     double score()
     {
-        double log = 0d;
-        if ( latencies.size() > 0 )
-        {
-            double probability = p(SENTINEL_COMPARE);
-            log = (-1) * Math.log10( probability );
-        }
-        return log;
+        return (size() > 0) ? mean() : 0.0;
     }
 
 }


Reply via email to