Author: jbellis
Date: Wed May  5 14:50:48 2010
New Revision: 941327

URL: http://svn.apache.org/viewvc?rev=941327&view=rev
Log:
make hinted handoff option global to make it easier to merge to trunk.  patch 
by jbellis

Modified:
    cassandra/branches/cassandra-0.6/CHANGES.txt
    cassandra/branches/cassandra-0.6/conf/storage-conf.xml
    
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java

Modified: cassandra/branches/cassandra-0.6/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/CHANGES.txt?rev=941327&r1=941326&r2=941327&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.6/CHANGES.txt Wed May  5 14:50:48 2010
@@ -5,7 +5,7 @@
  * add latency histograms to CFSMBean (CASSANDRA-1024)
  * make resolving timestamp ties deterministic by using value bytes
    as a tiebreaker (CASSANDRA-1039)
- * Add per-keyspace option to turn off Hinted Handoff (CASSANDRA-894)
+ * Add option to turn off Hinted Handoff (CASSANDRA-894)
 
 
 0.6.1

Modified: cassandra/branches/cassandra-0.6/conf/storage-conf.xml
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/conf/storage-conf.xml?rev=941327&r1=941326&r2=941327&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/conf/storage-conf.xml (original)
+++ cassandra/branches/cassandra-0.6/conf/storage-conf.xml Wed May  5 14:50:48 
2010
@@ -46,6 +46,11 @@
   <AutoBootstrap>false</AutoBootstrap>
 
   <!--
+   ~ See http://wiki.apache.org/cassandra/HintedHandoff
+  -->
+  <HintedHandoffEnabled>true</HintedHandoffEnabled>
+
+  <!--
    ~ Keyspaces and ColumnFamilies:
    ~ A ColumnFamily is the Cassandra concept closest to a relational
    ~ table.  Keyspaces are separate groups of ColumnFamilies.  Except in

Modified: 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=941327&r1=941326&r2=941327&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
 (original)
+++ 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
 Wed May  5 14:50:48 2010
@@ -132,7 +132,7 @@ public class DatabaseDescriptor
     private static boolean snapshotBeforeCompaction;
     private static boolean autoBootstrap = false;
 
-    private static Map<String,Boolean> hintedHandOffByKS = new 
HashMap<String,Boolean>();
+    private static boolean hintedHandoffEnabled = true;
 
     private static IAuthenticator authenticator = new AllowAllAuthenticator();
 
@@ -467,6 +467,20 @@ public class DatabaseDescriptor
             if ( value != null)
                 CommitLog.setSegmentSize(Integer.parseInt(value) * 1024 * 
1024);
 
+            /* should Hinted Handoff be on? */
+            String hintedHandOffStr = 
xmlUtils.getNodeValue("/Storage/HintedHandoffEnabled");
+            if (hintedHandOffStr != null)
+            {
+                if (hintedHandOffStr.equalsIgnoreCase("true"))
+                    hintedHandoffEnabled = true;
+                else if (hintedHandOffStr.equalsIgnoreCase("false"))
+                    hintedHandoffEnabled = false;
+                else
+                    throw new ConfigurationException("Unrecognized value for 
HintedHandoff.  Use 'true' or 'false'.");
+            }
+            if (logger.isDebugEnabled())
+                logger.debug("setting hintedHandoffEnabled to " + 
hintedHandoffEnabled);
+
             readTablesFromXml();
             if (tables.isEmpty())
                 throw new ConfigurationException("No keyspaces configured");
@@ -621,17 +635,6 @@ public class DatabaseDescriptor
                     throw new ConfigurationException("Invalid endpointsnitch 
class " + endPointSnitchClassName + " " + e.getMessage());
                 }
 
-                /* should Hinted Handoff be on? */
-                String hintedHandOffStr = 
xmlUtils.getNodeValue("/Storage/Keyspaces/keyspa...@name='" + ksName + 
"']/HintedHandoff");
-                if (hintedHandOffStr == null || 
hintedHandOffStr.equalsIgnoreCase("true"))
-                    hintedHandOffByKS.put(ksName, true);
-                else if (hintedHandOffStr.equalsIgnoreCase("false"))
-                    hintedHandOffByKS.put(ksName, false);
-                else
-                    throw new ConfigurationException("Unrecognized value for 
HintedHandoff.  Use 'true' or 'false'.");
-                if (logger.isDebugEnabled())
-                    logger.debug("setting hintedHandOff to " + 
hintedHandOffByKS.get(ksName).toString() + " for " + ksName);
-
                 String xqlTable = "/Storage/Keyspaces/keyspa...@name='" + 
ksName + "']/";
                 NodeList columnFamilies = 
xmlUtils.getRequestedNodeList(xqlTable + "ColumnFamily");
 
@@ -1222,8 +1225,8 @@ public class DatabaseDescriptor
         return autoBootstrap;
     }
 
-    public static boolean isHintedHandOff(String table)
+    public static boolean hintedHandoffEnabled()
     {
-        return hintedHandOffByKS.get(table);
+        return hintedHandoffEnabled;
     }
 }

Modified: 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=941327&r1=941326&r2=941327&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
 (original)
+++ 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
 Wed May  5 14:50:48 2010
@@ -29,7 +29,6 @@ import com.google.common.collect.Multima
 import org.apache.cassandra.dht.Range;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.gms.FailureDetector;
-import org.apache.cassandra.gms.Gossiper;
 import org.apache.cassandra.service.WriteResponseHandler;
 import org.apache.cassandra.thrift.ConsistencyLevel;
 import org.apache.cassandra.utils.FBUtilities;
@@ -88,7 +87,7 @@ public abstract class AbstractReplicatio
         }
 
         // if everything was alive or we're not doing HH on this keyspace, 
stop with just the live nodes
-        if (map.size() == targets.size() || 
!DatabaseDescriptor.isHintedHandOff(table))
+        if (map.size() == targets.size() || 
!DatabaseDescriptor.hintedHandoffEnabled())
             return map;
 
         // assign dead endpoints to be hinted to the closest live one, or to 
the local node


Reply via email to