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>();


Reply via email to