You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/08/24 15:25:07 UTC

svn commit: r988533 - /cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java

Author: gdusbabek
Date: Tue Aug 24 13:25:07 2010
New Revision: 988533

URL: http://svn.apache.org/viewvc?rev=988533&view=rev
Log:
config-converter properly handles snitches and framed support. patch by Jon Hermes, reivewed by Gary Dusbabek. CASSANDRA-1420

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java?rev=988533&r1=988532&r2=988533&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/Converter.java Tue Aug 24 13:25:07 2010
@@ -63,6 +63,7 @@ public class Converter
         /* Read the table related stuff from config */
         try
         {
+            String endPointSnitchClassName = null; // Used as a sentinel. EPS cannot be undefined in 0.6.
             NodeList tablesxml = xmlUtils.getRequestedNodeList("/Storage/Keyspaces/Keyspace");
 
             String gcGrace = xmlUtils.getNodeValue("/Storage/GCGraceSeconds");
@@ -79,7 +80,14 @@ public class Converter
                 /* parsing out the table ksName */
                 ks.name = XMLUtils.getAttributeValue(table, "Name");
 
-                
+                value = xmlUtils.getNodeValue("/Storage/Keyspaces/Keyspace[@Name='" + ks.name + "']/EndPointSnitch");
+                if (endPointSnitchClassName == null) {
+                    endPointSnitchClassName = value;
+                }
+                else if (!endPointSnitchClassName.equals(value)) {
+                    throw new ConfigurationException("ERROR : EndPointSnitch is global in 0.7 -- multiple choices present.");
+                }
+
                 ks.replica_placement_strategy = xmlUtils.getNodeValue("/Storage/Keyspaces/Keyspace[@Name='" + ks.name + "']/ReplicaPlacementStrategy");
                 /* Data replication factor */
                 value = xmlUtils.getNodeValue("/Storage/Keyspaces/Keyspace[@Name='" + ks.name + "']/ReplicationFactor");
@@ -127,6 +135,18 @@ public class Converter
                 }
                 keyspaces.add(ks);
             }
+            if (endPointSnitchClassName.equals("org.apache.cassandra.locator.EndPointSnitch")) {
+                endPointSnitchClassName = "org.apache.cassandra.locator.RackInferringSnitch";
+                System.out.println("WARN : org.apache.cassandra.locator.EndPointSnitch has been replaced by org.apache.cassandra.locator.RackInferringSnitch");
+            }
+            else if (endPointSnitchClassName.equals("org.apache.cassandra.locator.PropertyFileEndpointSnitch")) {
+                endPointSnitchClassName = "org.apache.cassandra.locator.PropertyFileSnitch";
+                System.out.println("WARN : org.apache.cassandra.locator.PropertyFileEndpointSnich has been replaced by org.apache.cassandra.locator.PropertyFileSnitch");
+            }
+            else {
+                System.out.println("INFO : EndPointSnitch is global in 0.7 and may need to be updated.");
+            }
+            conf.endpoint_snitch = endPointSnitchClassName;
             return keyspaces;
         }
         catch (XPathExpressionException e) 
@@ -215,14 +235,17 @@ public class Converter
                 conf.rpc_port = Integer.parseInt(port);
             
             String framedRaw = xmlUtils.getNodeValue("/Storage/ThriftFramedTransport");
-            if (framedRaw != null && Boolean.valueOf(framedRaw))
+            if (framedRaw != null && !Boolean.valueOf(framedRaw))
+            {
+                conf.thrift_framed_transport_size_in_mb = 0;
+                System.out.println("WARN : Thrift uses framed Transport by default in 0.7! Setting TFramedTransportSize to 0MB (disabled).");
+            }
+            else
             {
                 conf.thrift_framed_transport_size_in_mb = 15;
                 System.out.println("TFramedTransport will have a maximum frame size of 15MB");
             }
             
-            conf.endpoint_snitch = xmlUtils.getNodeValue("/Storage/EndpointSnitch");
-            
             String sbc = xmlUtils.getNodeValue("/Storage/SnapshotBeforeCompaction");
             if (sbc != null)
             {
@@ -264,8 +287,7 @@ public class Converter
             conf.seeds = xmlUtils.getNodeValues("/Storage/Seeds/Seed");
             
             conf.keyspaces = readTablesFromXml(xmlUtils);
-            
-        } 
+        }
         catch (ParserConfigurationException e) {
             System.out.println("Parser error during previous config load.");
             throw new ConfigurationException("Parser error during previous config load.");