You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/01/14 00:38:55 UTC

svn commit: r1058797 - in /cassandra/trunk: CHANGES.txt conf/cassandra.yaml src/java/org/apache/cassandra/cli/CliClient.java src/java/org/apache/cassandra/config/KSMetaData.java

Author: jbellis
Date: Thu Jan 13 23:38:55 2011
New Revision: 1058797

URL: http://svn.apache.org/viewvc?rev=1058797&view=rev
Log:
make NetworkTopologyStrategy the default
patch by Pavel Yaskevich; reviewed by brandonwilliams for CASSANDRA-1960

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/conf/cassandra.yaml
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
    cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java

Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1058797&r1=1058796&r2=1058797&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Jan 13 23:38:55 2011
@@ -1,6 +1,7 @@
 0.8-dev
  * avoid double RowMutation serialization on write path (CASSANDRA-1800)
  * adds support for columns that act as incr/decr counters (CASSANDRA-1072)
+ * make NetworkTopologyStrategy the default (CASSANDRA-1960)
 
 
 0.7.1-dev

Modified: cassandra/trunk/conf/cassandra.yaml
URL: http://svn.apache.org/viewvc/cassandra/trunk/conf/cassandra.yaml?rev=1058797&r1=1058796&r2=1058797&view=diff
==============================================================================
--- cassandra/trunk/conf/cassandra.yaml (original)
+++ cassandra/trunk/conf/cassandra.yaml Thu Jan 13 23:38:55 2011
@@ -314,8 +314,7 @@ 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. 
 #   An example:
 #    - name: Keyspace1
 #      replica_placement_strategy: org.apache.cassandra.locator.NetworkTopologyStrategy

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1058797&r1=1058796&r2=1058797&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Thu Jan 13 23:38:55 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/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1058797&r1=1058796&r2=1058797&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java Thu Jan 13 23:38:55 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>();