Author: jbellis
Date: Fri Jan 28 15:51:25 2011
New Revision: 1064744

URL: http://svn.apache.org/viewvc?rev=1064744&view=rev
Log:
take UTF8 conversion out of inner loop
patch by jbellis

Modified:
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=1064744&r1=1064743&r2=1064744&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java
 Fri Jan 28 15:51:25 2011
@@ -197,40 +197,41 @@ 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(ByteBuffer.wrap(endpoint.getHostAddress().getBytes(UTF_8)));
+        ByteBuffer endpointAsUTF8 = 
ByteBuffer.wrap(endpoint.getHostAddress().getBytes(UTF_8)); // keys have to be 
UTF8 to make OPP happy
+        DecoratedKey epkey =  
StorageService.getPartitioner().decorateKey(endpointAsUTF8);
         int rowsReplayed = 0;
         ColumnFamilyStore hintStore = 
Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(HINTS_CF);
         ByteBuffer startColumn = ByteBufferUtil.EMPTY_BYTE_BUFFER;
+
         delivery:
-            while (true)
+        while (true)
+        {
+            QueryFilter filter = QueryFilter.getSliceFilter(epkey, new 
QueryPath(HINTS_CF), startColumn, ByteBufferUtil.EMPTY_BYTE_BUFFER, false, 
PAGE_SIZE);
+            ColumnFamily hintColumnFamily = 
ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(filter), 
Integer.MAX_VALUE);
+            if (pagingFinished(hintColumnFamily, startColumn))
+                break;
+            for (IColumn keyColumn : hintColumnFamily.getSortedColumns())
             {
-                QueryFilter filter = QueryFilter.getSliceFilter(epkey, new 
QueryPath(HINTS_CF), startColumn, ByteBufferUtil.EMPTY_BYTE_BUFFER, false, 
PAGE_SIZE);
-                ColumnFamily hintColumnFamily = 
ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(filter), 
Integer.MAX_VALUE);
-                if (pagingFinished(hintColumnFamily, startColumn))
-                    break;
-                Collection<IColumn> keyColumns = 
hintColumnFamily.getSortedColumns();
-                for (IColumn keyColumn : keyColumns)
+                startColumn = keyColumn.name();
+                Collection<IColumn> tableCFs = keyColumn.getSubColumns();
+                for (IColumn tableCF : tableCFs)
                 {
-                    startColumn = keyColumn.name();
-                    Collection<IColumn> tableCFs = keyColumn.getSubColumns();
-                    for (IColumn tableCF : tableCFs)
+                    String[] parts = getTableAndCFNames(tableCF.name());
+                    if (sendMessage(endpoint, parts[0], parts[1], 
keyColumn.name()))
                     {
-                        String[] parts = getTableAndCFNames(tableCF.name());
-                        if (sendMessage(endpoint, parts[0], parts[1], 
keyColumn.name()))
-                        {
-                            
deleteHintKey(ByteBuffer.wrap(endpoint.getHostAddress().getBytes(UTF_8)), 
keyColumn.name(), tableCF.name(), tableCF.timestamp());
-                            rowsReplayed++;
-                        }
-                        else
-                        {
-                            logger_.info("Could not complete hinted handoff to 
" + endpoint);
-                            break delivery;
-                        }
-
-                        startColumn = keyColumn.name();
+                        deleteHintKey(endpointAsUTF8, keyColumn.name(), 
tableCF.name(), tableCF.timestamp());
+                        rowsReplayed++;
                     }
+                    else
+                    {
+                        logger_.info("Could not complete hinted handoff to " + 
endpoint);
+                        break delivery;
+                    }
+
+                    startColumn = keyColumn.name();
                 }
             }
+        }
 
         if (rowsReplayed > 0)
         {


Reply via email to