Repository: cassandra Updated Branches: refs/heads/trunk 245759942 -> 9ddce25ff
Fix potential exception in SSTableIterator indexed reader patch by carlyeks; reviewed by slebresne for CASSANDRA-9859 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9ddce25f Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9ddce25f Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9ddce25f Branch: refs/heads/trunk Commit: 9ddce25ff79efae6edd42c1f2f4c78deba19b4e7 Parents: 2457599 Author: Sylvain Lebresne <[email protected]> Authored: Wed Jul 22 18:18:23 2015 +0200 Committer: Sylvain Lebresne <[email protected]> Committed: Wed Jul 22 18:20:03 2015 +0200 ---------------------------------------------------------------------- CHANGES.txt | 2 +- .../cassandra/db/columniterator/AbstractSSTableIterator.java | 2 +- .../org/apache/cassandra/db/columniterator/SSTableIterator.java | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ddce25f/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 56c3495..7277140 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,7 +3,7 @@ * Metrics should use up to date nomenclature (CASSANDRA-9448) * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) * Cleanup crc and adler code for java 8 (CASSANDRA-9650) - * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, 9848) + * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, 9848, 9705, 9859) * Update Guava to 18.0 (CASSANDRA-9653) * Bloom filter false positive ratio is not honoured (CASSANDRA-8413) * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522) http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ddce25f/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 8625112..4a35e80 100644 --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@ -456,7 +456,7 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator // Check if we've crossed an index boundary (based on the mark on the beginning of the index block). public boolean isPastCurrentBlock() { - return currentIndexIdx < indexes.size() && reader.file.bytesPastMark(mark) >= currentIndex().width; + return reader.file.bytesPastMark(mark) >= currentIndex().width; } public int currentBlockIdx() http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ddce25f/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index a58ea3e..64d33dc 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -252,8 +252,9 @@ public class SSTableIterator extends AbstractSSTableIterator protected Unfiltered computeNext() throws IOException { // Our previous read might have made us cross an index block boundary. If so, update our informations. - if (indexState.isPastCurrentBlock()) - indexState.setToBlock(indexState.currentBlockIdx() + 1); + int currentBlockIdx = indexState.currentBlockIdx(); + if (indexState.isPastCurrentBlock() && currentBlockIdx + 1 < indexState.blocksCount()) + indexState.setToBlock(currentBlockIdx + 1); // Return the next unfiltered unless we've reached the end, or we're beyond our slice // end (note that unless we're on the last block for the slice, there is no point
