You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/04/16 23:24:35 UTC
[6/6] git commit: fix wide row iteration when last row read was
deleted patch by jbellis; reviewed by brandonwilliams for CASSANDRA-4154
fix wide row iteration when last row read was deleted
patch by jbellis; reviewed by brandonwilliams for CASSANDRA-4154
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b184972b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b184972b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b184972b
Branch: refs/heads/cassandra-1.1
Commit: b184972b0f83487cb44ce7c211d3ca7cd5dbb3eb
Parents: 483a699
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Apr 16 16:23:28 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Apr 16 16:23:28 2012 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../cassandra/hadoop/ColumnFamilyRecordReader.java | 13 +++++++------
2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b184972b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f09a470..be3264a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
1.1-dev
+ * (Hadoop) fix wide row iteration when last row read was deleted
+ (CASSANDRA-4154)
* fix read_repair_chance to really default to 0.1 in the cli (CASSANDRA-4114)
* Adds caching and bloomFilterFpChange to CQL options (CASSANDRA-4042)
* Adds posibility to autoconfigure size of the KeyCache (CASSANDRA-4087)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b184972b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
index 600cf13..9459d5a 100644
--- a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
+++ b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
@@ -413,6 +413,7 @@ public class ColumnFamilyRecordReader extends RecordReader<ByteBuffer, SortedMap
private class WideRowIterator extends RowIterator
{
private PeekingIterator<Pair<ByteBuffer, SortedMap<ByteBuffer, IColumn>>> wideColumns;
+ private ByteBuffer lastColumn = ByteBufferUtil.EMPTY_BYTE_BUFFER;
private void maybeInit()
{
@@ -428,7 +429,6 @@ public class ColumnFamilyRecordReader extends RecordReader<ByteBuffer, SortedMap
.setStart_token(startToken)
.setEnd_token(split.getEndToken())
.setRow_filter(filter);
- startColumn = ByteBufferUtil.EMPTY_BYTE_BUFFER;
}
else
{
@@ -438,20 +438,19 @@ public class ColumnFamilyRecordReader extends RecordReader<ByteBuffer, SortedMap
.setStart_key(lastRow.key)
.setEnd_token(split.getEndToken())
.setRow_filter(filter);
- startColumn = Iterables.getLast(lastRow.columns).column.name;
}
try
{
- rows = client.get_paged_slice(cfName, keyRange, startColumn, consistencyLevel);
+ rows = client.get_paged_slice(cfName, keyRange, lastColumn, consistencyLevel);
int n = 0;
for (KeySlice row : rows)
n += row.columns.size();
logger.debug("read {} columns in {} rows for {} starting with {}",
- new Object[]{ n, rows.size(), keyRange, startColumn });
+ new Object[]{ n, rows.size(), keyRange, lastColumn });
wideColumns = Iterators.peekingIterator(new WideColumnIterator(rows));
- if (wideColumns.hasNext() && wideColumns.peek().right.keySet().iterator().next().equals(startColumn))
+ if (wideColumns.hasNext() && wideColumns.peek().right.keySet().iterator().next().equals(lastColumn))
wideColumns.next();
if (!wideColumns.hasNext())
rows = null;
@@ -469,7 +468,9 @@ public class ColumnFamilyRecordReader extends RecordReader<ByteBuffer, SortedMap
return endOfData();
totalRead++;
- return wideColumns.next();
+ Pair<ByteBuffer, SortedMap<ByteBuffer, IColumn>> next = wideColumns.next();
+ lastColumn = next.right.values().iterator().next().name();
+ return next;
}
private class WideColumnIterator extends AbstractIterator<Pair<ByteBuffer, SortedMap<ByteBuffer, IColumn>>>