FailureDetector: update to c3 compat
This commit is contained in:
parent
3efcd5103b
commit
b7a6554ee9
@ -26,12 +26,23 @@ package org.apache.cassandra.gms;
|
||||
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.json.JsonArray;
|
||||
import javax.json.JsonObject;
|
||||
import javax.json.JsonValue;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
import javax.management.openmbean.CompositeData;
|
||||
import javax.management.openmbean.CompositeDataSupport;
|
||||
import javax.management.openmbean.CompositeType;
|
||||
import javax.management.openmbean.OpenDataException;
|
||||
import javax.management.openmbean.OpenType;
|
||||
import javax.management.openmbean.SimpleType;
|
||||
import javax.management.openmbean.TabularData;
|
||||
import javax.management.openmbean.TabularDataSupport;
|
||||
import javax.management.openmbean.TabularType;
|
||||
|
||||
import com.scylladb.jmx.api.APIClient;
|
||||
|
||||
@ -62,19 +73,23 @@ public class FailureDetector implements FailureDetectorMBean {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dumpInterArrivalTimes() {
|
||||
log(" dumpInterArrivalTimes()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPhiConvictThreshold(double phi) {
|
||||
log(" setPhiConvictThreshold(double phi)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPhiConvictThreshold() {
|
||||
log(" getPhiConvictThreshold()");
|
||||
return c.getDoubleValue("/failure_detector/phi");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAllEndpointStates() {
|
||||
log(" getAllEndpointStates()");
|
||||
|
||||
@ -117,24 +132,60 @@ public class FailureDetector implements FailureDetectorMBean {
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEndpointState(String address) throws UnknownHostException {
|
||||
log(" getEndpointState(String address) throws UnknownHostException");
|
||||
return c.getStringValue("/failure_detector/endpoints/states/" + address);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getSimpleStates() {
|
||||
log(" getSimpleStates()");
|
||||
return c.getMapStrValue("/failure_detector/simple_states");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDownEndpointCount() {
|
||||
log(" getDownEndpointCount()");
|
||||
return c.getIntValue("/failure_detector/count/endpoint/down");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUpEndpointCount() {
|
||||
log(" getUpEndpointCount()");
|
||||
return c.getIntValue("/failure_detector/count/endpoint/up");
|
||||
}
|
||||
|
||||
// From origin:
|
||||
// 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); // 0.434...
|
||||
|
||||
@Override
|
||||
public TabularData getPhiValues() throws OpenDataException {
|
||||
final CompositeType ct = new CompositeType("Node", "Node", new String[] { "Endpoint", "PHI" },
|
||||
new String[] { "IP of the endpoint", "PHI value" },
|
||||
new OpenType[] { SimpleType.STRING, SimpleType.DOUBLE });
|
||||
final TabularDataSupport results = new TabularDataSupport(
|
||||
new TabularType("PhiList", "PhiList", ct, new String[] { "Endpoint" }));
|
||||
final JsonArray arr = c.getJsonArray("/failure_detector/endpoint_phi_values");
|
||||
|
||||
for (JsonValue v : arr) {
|
||||
JsonObject o = (JsonObject) v;
|
||||
String endpoint = o.getString("endpoint");
|
||||
double phi = Double.parseDouble(o.getString("phi"));
|
||||
|
||||
if (phi != Double.MIN_VALUE) {
|
||||
// returned values are scaled by PHI_FACTOR so that the are on
|
||||
// the same scale as PhiConvictThreshold
|
||||
final CompositeData data = new CompositeDataSupport(ct, new String[] { "Endpoint", "PHI" },
|
||||
new Object[] { endpoint, phi * PHI_FACTOR });
|
||||
results.put(data);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,9 @@ package org.apache.cassandra.gms;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.management.openmbean.OpenDataException;
|
||||
import javax.management.openmbean.TabularData;
|
||||
|
||||
public interface FailureDetectorMBean
|
||||
{
|
||||
public void dumpInterArrivalTimes();
|
||||
@ -37,4 +40,6 @@ public interface FailureDetectorMBean
|
||||
public int getDownEndpointCount();
|
||||
|
||||
public int getUpEndpointCount();
|
||||
|
||||
public TabularData getPhiValues() throws OpenDataException;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user