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)
{