Example usage for org.apache.cassandra.locator AbstractReplicationStrategy getReplicationFactor

List of usage examples for org.apache.cassandra.locator AbstractReplicationStrategy getReplicationFactor

Introduction

In this page you can find the example usage for org.apache.cassandra.locator AbstractReplicationStrategy getReplicationFactor.

Prototype

public abstract ReplicationFactor getReplicationFactor();

Source Link

Document

calculate the RF based on strategy_options.

Usage

From source file:org.elassandra.cluster.InternalCassandraClusterService.java

License:Apache License

public ClusterState updateNumberOfShards(ClusterState currentState) {
    int numberOfNodes = currentState.nodes().size();
    assert numberOfNodes > 0;
    MetaData.Builder metaDataBuilder = MetaData.builder(currentState.metaData());
    for (Iterator<IndexMetaData> it = currentState.metaData().iterator(); it.hasNext();) {
        IndexMetaData indexMetaData = it.next();
        IndexMetaData.Builder indexMetaDataBuilder = IndexMetaData.builder(indexMetaData);
        indexMetaDataBuilder.numberOfShards(numberOfNodes);
        String keyspace = indexMetaData.keyspace();
        if (Schema.instance != null && Schema.instance.getKeyspaceInstance(keyspace) != null) {
            AbstractReplicationStrategy replicationStrategy = Schema.instance.getKeyspaceInstance(keyspace)
                    .getReplicationStrategy();
            int rf = replicationStrategy.getReplicationFactor();
            if (replicationStrategy instanceof NetworkTopologyStrategy) {
                rf = ((NetworkTopologyStrategy) replicationStrategy)
                        .getReplicationFactor(DatabaseDescriptor.getLocalDataCenter());
            }/*from   w  w w  . j  av a  2s . c om*/
            indexMetaDataBuilder.numberOfReplicas(Math.max(0, rf - 1));
        } else {
            indexMetaDataBuilder.numberOfReplicas(0);
        }
        metaDataBuilder.put(indexMetaDataBuilder.build(), false);
    }
    return ClusterState.builder(currentState).metaData(metaDataBuilder.build()).build();
}

From source file:org.elassandra.cluster.InternalCassandraClusterService.java

License:Apache License

@Override
public ShardInfo shardInfo(String index, ConsistencyLevel cl) {
    Keyspace keyspace = Schema.instance.getKeyspaceInstance(state().metaData().index(index).keyspace());
    AbstractReplicationStrategy replicationStrategy = keyspace.getReplicationStrategy();
    int rf = replicationStrategy.getReplicationFactor();
    if (replicationStrategy instanceof NetworkTopologyStrategy)
        rf = ((NetworkTopologyStrategy) replicationStrategy)
                .getReplicationFactor(DatabaseDescriptor.getLocalDataCenter());
    return new ShardInfo(rf, cl.blockFor(keyspace));
}