Repository: cassandra Updated Branches: refs/heads/10360 [created] e3c5245a0
Fix regression from CASSANDRA-10136 When a read crossed a column index boundary (reading old sstable), we have to mark the beginning of the index block and so we seek back to said index block start, mark, and seek back to where we were to continue reading. The problem was that the seekToPosition() method was clearing the deserialization state which, in that case, is not what we wanted. The patch move the clearing out of the seek method and only call it when that's actually what we want to do. Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/228b8020 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/228b8020 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/228b8020 Branch: refs/heads/10360 Commit: 228b8020e5329de0b75f9dca9a6706b784afce26 Parents: fd5e474 Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Fri Oct 16 13:47:40 2015 +0200 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Mon Oct 19 11:00:34 2015 +0200 ---------------------------------------------------------------------- .../cassandra/db/columniterator/AbstractSSTableIterator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/228b8020/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index 837f0a0..8900b31 100644 --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@ -323,7 +323,6 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator else { file.seek(position); - deserializer.clearState(); } } @@ -438,7 +437,10 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator public void setToBlock(int blockIdx) throws IOException { if (blockIdx >= 0 && blockIdx < indexes.size()) + { reader.seekToPosition(columnOffset(blockIdx)); + reader.deserializer.clearState(); + } currentIndexIdx = blockIdx; reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;