Author: jbellis
Date: Tue May 25 14:12:27 2010
New Revision: 948052
URL: http://svn.apache.org/viewvc?rev=948052&view=rev
Log:
Expose setting of phi in the FailureDetector, for trunk. patch by Brandon
Williams; reviewed by jbellis for CASSANDRA-1053
Modified:
cassandra/trunk/conf/cassandra.yaml
cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetectorMBean.java
Modified: cassandra/trunk/conf/cassandra.yaml
URL:
http://svn.apache.org/viewvc/cassandra/trunk/conf/cassandra.yaml?rev=948052&r1=948051&r2=948052&view=diff
==============================================================================
--- cassandra/trunk/conf/cassandra.yaml (original)
+++ cassandra/trunk/conf/cassandra.yaml Tue May 25 14:12:27 2010
@@ -109,6 +109,10 @@ commitlog_sync_period_in_ms: 10000
# Time to wait for a reply from other nodes before failing the command
rpc_timeout_in_ms: 10000
+# phi value that must be reached for a host to be marked down.
+# most users should never need to adjust this.
+# phi_convict_threshold: 8
+
# time to wait before garbage collecting tombstones (deletion markers)
gc_grace_seconds: 864000
Modified: cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/Config.java?rev=948052&r1=948051&r2=948052&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/Config.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/Config.java Tue May 25
14:12:27 2010
@@ -28,6 +28,8 @@ public class Config {
public String initial_token;
public Long rpc_timeout_in_ms = new Long(2000);
+
+ public Integer phi_convict_threshold = 8;
public Integer concurrent_reads = 8;
public Integer concurrent_writes = 32;
Modified:
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=948052&r1=948051&r2=948052&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Tue May 25 14:12:27 2010
@@ -202,6 +202,12 @@ public class DatabaseDescriptor
throw new ConfigurationException("Invalid partitioner class "
+ conf.partitioner);
}
+ /* phi convict threshold for FailureDetector */
+ if (conf.phi_convict_threshold < 5 || conf.phi_convict_threshold >
16)
+ {
+ throw new ConfigurationException("phi_convict_threshold must
be between 5 and 16");
+ }
+
/* Thread per pool */
if (conf.concurrent_reads != null && conf.concurrent_reads < 2)
{
@@ -745,6 +751,11 @@ public class DatabaseDescriptor
return conf.rpc_timeout_in_ms;
}
+ public static int getPhiConvictThreshold()
+ {
+ return conf.phi_convict_threshold;
+ }
+
public static int getConsistencyThreads()
{
return consistencyThreads;
Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=948052&r1=948051&r2=948052&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java Tue
May 25 14:12:27 2010
@@ -29,6 +29,7 @@ import javax.management.ObjectName;
import org.apache.commons.lang.StringUtils;
import java.net.InetAddress;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.BoundedStatsDeque;
import org.slf4j.Logger;
@@ -44,7 +45,7 @@ public class FailureDetector implements
public static final IFailureDetector instance = new FailureDetector();
private static Logger logger_ =
LoggerFactory.getLogger(FailureDetector.class);
private static final int sampleSize_ = 1000;
- private static final int phiConvictThreshold_ = 8;
+ private static int phiConvictThreshold_;
/* The Failure Detector has to have been up for at least 1 min. */
private static final long uptimeThreshold_ = 60000;
/* The time when the module was instantiated. */
@@ -55,6 +56,7 @@ public class FailureDetector implements
public FailureDetector()
{
+ phiConvictThreshold_ = DatabaseDescriptor.getPhiConvictThreshold();
creationTime_ = System.currentTimeMillis();
// Register this instance with JMX
try
@@ -109,6 +111,16 @@ public class FailureDetector implements
throw new IOError(e);
}
}
+
+ public void setPhiConvictThreshold(int phi)
+ {
+ phiConvictThreshold_ = phi;
+ }
+
+ public int getPhiConvictThreshold()
+ {
+ return phiConvictThreshold_;
+ }
public boolean isAlive(InetAddress ep)
{
Modified:
cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetectorMBean.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetectorMBean.java?rev=948052&r1=948051&r2=948052&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetectorMBean.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetectorMBean.java
Tue May 25 14:12:27 2010
@@ -21,4 +21,8 @@ package org.apache.cassandra.gms;
public interface FailureDetectorMBean
{
public void dumpInterArrivalTimes();
+
+ public void setPhiConvictThreshold(int phi);
+
+ public int getPhiConvictThreshold();
}