List of usage examples for org.apache.cassandra.locator AbstractReplicationStrategy getReplicationFactor
public abstract ReplicationFactor getReplicationFactor();
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)); }