Author: brandonwilliams
Date: Fri Aug 27 19:41:12 2010
New Revision: 990241

URL: http://svn.apache.org/viewvc?rev=990241&view=rev
Log:
Always use UTF-8 for hint keys.  Patch by brandonwilliams, reviewed by jbellis 
for CASSANDRA-1439

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
    cassandra/trunk/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
    cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=990241&r1=990240&r2=990241&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Fri Aug 27 19:41:12 2010
@@ -1,4 +1,5 @@
 dev
+ * always use UTF-8 for hint keys (CASSANDRA-1439)
  * remove cassandra.yaml dependency from Hadoop and Pig (CASSADRA-1322)
  * expose CfDef metadata in describe_keyspaces (CASSANDRA-1633)
  * restore use of mmap_index_only option (CASSANDRA-1241)

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=990241&r1=990240&r2=990241&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java 
Fri Aug 27 19:41:12 2010
@@ -202,7 +202,7 @@ public class HintedHandOffManager
         // 3. Delete the subcolumn if the write was successful
         // 4. Force a flush
         // 5. Do major compaction to clean up all deletes etc.
-        DecoratedKey epkey =  
StorageService.getPartitioner().decorateKey(endpoint.getAddress());
+        DecoratedKey epkey =  
StorageService.getPartitioner().decorateKey(endpoint.getHostAddress().getBytes(UTF_8));
         int rowsReplayed = 0;
         ColumnFamilyStore hintStore = 
Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(HINTS_CF);
         byte[] startColumn = ArrayUtils.EMPTY_BYTE_ARRAY;
@@ -223,7 +223,7 @@ public class HintedHandOffManager
                         String[] parts = getTableAndCFNames(tableCF.name());
                         if (sendMessage(endpoint, parts[0], parts[1], 
keyColumn.name()))
                         {
-                            deleteHintKey(endpoint.getAddress(), 
keyColumn.name(), tableCF.name(), tableCF.clock());
+                            
deleteHintKey(endpoint.getHostAddress().getBytes(UTF_8), keyColumn.name(), 
tableCF.name(), tableCF.clock());
                             rowsReplayed++;
                         }
                         else

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java?rev=990241&r1=990240&r2=990241&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java 
Fri Aug 27 19:41:12 2010
@@ -32,6 +32,9 @@ import org.slf4j.LoggerFactory;
 import org.apache.cassandra.net.*;
 import org.apache.cassandra.utils.FBUtilities;
 
+import static com.google.common.base.Charsets.UTF_8;
+
+
 public class RowMutationVerbHandler implements IVerbHandler
 {
     private static Logger logger_ = 
LoggerFactory.getLogger(RowMutationVerbHandler.class);
@@ -53,7 +56,7 @@ public class RowMutationVerbHandler impl
             {
                 assert hintedBytes.length > 0;
                 ByteBuffer bb = ByteBuffer.wrap(hintedBytes);
-                byte[] addressBytes = new 
byte[FBUtilities.getLocalAddress().getAddress().length];
+                byte[] addressBytes = new 
byte[FBUtilities.getLocalAddress().getHostAddress().getBytes(UTF_8).length];
                 while (bb.remaining() > 0)
                 {
                     bb.get(addressBytes);

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=990241&r1=990240&r2=990241&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Fri 
Aug 27 19:41:12 2010
@@ -30,6 +30,7 @@ import javax.management.ObjectName;
 
 import com.google.common.collect.AbstractIterator;
 import com.google.common.collect.Multimap;
+import static com.google.common.base.Charsets.UTF_8;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -179,7 +180,8 @@ public class StorageProxy implements Sto
     private static void addHintHeader(Message message, InetAddress target)
     {
         byte[] oldHint = message.getHeader(RowMutation.HINT);
-        byte[] hint = oldHint == null ? target.getAddress() : 
ArrayUtils.addAll(oldHint, target.getAddress());
+        byte[] address = target.getHostAddress().getBytes(UTF_8);
+        byte[] hint = oldHint == null ? address : ArrayUtils.addAll(oldHint, 
address);
         message.setHeader(RowMutation.HINT, hint);
     }
 


Reply via email to