Author: brandonwilliams Date: Thu Jan 13 22:13:45 2011 New Revision: 1058764
URL: http://svn.apache.org/viewvc?rev=1058764&view=rev Log: Make NetworkTopologyStrategy the default. Patch by Pavel Yaskevich, reviewed by brandonwilliams for CASSANDRA-1960 Modified: cassandra/branches/cassandra-0.7/conf/cassandra.yaml cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/KSMetaData.java Modified: cassandra/branches/cassandra-0.7/conf/cassandra.yaml URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/conf/cassandra.yaml?rev=1058764&r1=1058763&r2=1058764&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/conf/cassandra.yaml (original) +++ cassandra/branches/cassandra-0.7/conf/cassandra.yaml Thu Jan 13 22:13:45 2011 @@ -309,8 +309,9 @@ index_interval: 128 # With NetworkTopologyStrategy, # for each datacenter, you can specify how many replicas you want # on a per-keyspace basis. Replicas are placed on different racks -# within each DC, if possible. This strategy also requires rack aware -# snitch, such as RackInferringSnitch or PropertyFileSnitch. +# within each DC, if possible. With SimpleSnitch, this will be +# equivalent to SimpleStrategy. Later, the snitch can be upgraded to +# one such as RackInferringSnitch or PropertyFileSnitch. # An example: # - name: Keyspace1 # replica_placement_strategy: org.apache.cassandra.locator.NetworkTopologyStrategy @@ -405,7 +406,7 @@ index_interval: 128 # /NOTE keyspaces: - name: Keyspace1 - replica_placement_strategy: org.apache.cassandra.locator.SimpleStrategy + replica_placement_strategy: org.apache.cassandra.locator.NetworkTopologyStrategy replication_factor: 1 column_families: - name: Standard1 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java?rev=1058764&r1=1058763&r2=1058764&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java Thu Jan 13 22:13:45 2011 @@ -18,6 +18,8 @@ package org.apache.cassandra.cli; import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.util.*; @@ -29,6 +31,7 @@ import org.apache.cassandra.config.Confi import org.apache.cassandra.db.ColumnFamilyStoreMBean; import org.apache.cassandra.db.CompactionManagerMBean; import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.locator.SimpleSnitch; import org.apache.cassandra.thrift.*; import org.apache.cassandra.tools.NodeProbe; import org.apache.cassandra.utils.ByteBufferUtil; @@ -92,7 +95,8 @@ public class CliClient extends CliUserHe PLACEMENT_STRATEGY, STRATEGY_OPTIONS } - private static final String DEFAULT_PLACEMENT_STRATEGY = "org.apache.cassandra.locator.SimpleStrategy"; + + private static final String DEFAULT_PLACEMENT_STRATEGY = "org.apache.cassandra.locator.NetworkTopologyStrategy"; private Cassandra.Client thriftClient = null; private CliSessionState sessionState = null; @@ -803,6 +807,30 @@ public class CliClient extends CliUserHe } } + // using default snitch options if strategy is NetworkTopologyStrategy and no options were set. + if (ksDef.getStrategy_class().contains(".NetworkTopologyStrategy")) + { + Map<String, String> currentStrategyOptions = ksDef.getStrategy_options(); + + // adding default data center from SimpleSnitch + if (currentStrategyOptions == null || currentStrategyOptions.isEmpty()) + { + SimpleSnitch snitch = new SimpleSnitch(); + Map<String, String> options = new HashMap<String, String>(); + + try + { + options.put(snitch.getDatacenter(InetAddress.getLocalHost()), "1"); + } + catch (UnknownHostException e) + { + throw new RuntimeException(e.getMessage()); + } + + ksDef.setStrategy_options(options); + } + } + return ksDef; } Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/KSMetaData.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1058764&r1=1058763&r2=1058764&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/KSMetaData.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/KSMetaData.java Thu Jan 13 22:13:45 2011 @@ -28,7 +28,7 @@ import org.apache.commons.lang.ObjectUti import org.apache.avro.util.Utf8; import org.apache.cassandra.io.SerDeUtils; import org.apache.cassandra.locator.AbstractReplicationStrategy; -import org.apache.cassandra.locator.SimpleStrategy; +import org.apache.cassandra.locator.NetworkTopologyStrategy; public final class KSMetaData { @@ -41,7 +41,7 @@ public final class KSMetaData public KSMetaData(String name, Class<? extends AbstractReplicationStrategy> strategyClass, Map<String, String> strategyOptions, int replicationFactor, CFMetaData... cfDefs) { this.name = name; - this.strategyClass = strategyClass == null ? SimpleStrategy.class : strategyClass; + this.strategyClass = strategyClass == null ? NetworkTopologyStrategy.class : strategyClass; this.strategyOptions = strategyOptions; this.replicationFactor = replicationFactor; Map<String, CFMetaData> cfmap = new HashMap<String, CFMetaData>();
