Search in sources :

Example 1 with DynamicEndpointSnitch

use of org.apache.cassandra.locator.DynamicEndpointSnitch in project eiger by wlloyd.

the class StorageService method updateSnitch.

@Override
public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ConfigurationException {
    IEndpointSnitch oldSnitch = DatabaseDescriptor.getEndpointSnitch();
    // new snitch registers mbean during construction
    IEndpointSnitch newSnitch = FBUtilities.construct(epSnitchClassName, "snitch");
    if (dynamic) {
        DatabaseDescriptor.setDynamicUpdateInterval(dynamicUpdateInterval);
        DatabaseDescriptor.setDynamicResetInterval(dynamicResetInterval);
        DatabaseDescriptor.setDynamicBadnessThreshold(dynamicBadnessThreshold);
        newSnitch = new DynamicEndpointSnitch(newSnitch);
    }
    // point snitch references to the new instance
    DatabaseDescriptor.setEndpointSnitch(newSnitch);
    for (String ks : Schema.instance.getTables()) {
        Table.open(ks).getReplicationStrategy().snitch = newSnitch;
    }
    if (oldSnitch instanceof DynamicEndpointSnitch)
        ((DynamicEndpointSnitch) oldSnitch).unregisterMBean();
}
Also used : DynamicEndpointSnitch(org.apache.cassandra.locator.DynamicEndpointSnitch) IEndpointSnitch(org.apache.cassandra.locator.IEndpointSnitch)

Aggregations

DynamicEndpointSnitch (org.apache.cassandra.locator.DynamicEndpointSnitch)1 IEndpointSnitch (org.apache.cassandra.locator.IEndpointSnitch)1