You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2018/06/14 17:23:11 UTC

[1/6] cassandra git commit: Update current index block pointer when slice precedes partition start

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 897b55a6b -> eb91942f6
  refs/heads/cassandra-3.11 f0403b4e9 -> 191ad7b87
  refs/heads/trunk 3b56d4df4 -> 255242237


Update current index block pointer when slice precedes partition start

When reverse iterating an indexed sstable partition, if the end bound of
the query slice is < the first unfiltered in the partition, the current
index block pointer is not updated. This causes the reader to incorrectly
jump to the end of the partition and start reading from there once the
initial emtpy iterator has been consumed.

Patch by Sam Tunnicliffe; reviewed by Aleksey Yeschenko and Blake Eggleston
for CASSANDRA-14513


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb91942f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb91942f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb91942f

Branch: refs/heads/cassandra-3.0
Commit: eb91942f64972bef04c4e965dcdf788ae1f21a60
Parents: 897b55a
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Fri Jun 8 12:57:54 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:15:57 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 94fbcd2..ebf8764 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.17
+ * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513)
  * Fix regression of lagging commitlog flush log message (CASSANDRA-14451)
  * Add Missing dependencies in pom-all (CASSANDRA-14422)
  * Cleanup StartupClusterConnectivityChecker and PING Verb (CASSANDRA-14447)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/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 f9e6545..386b2c8 100644
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@ -420,12 +420,12 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator
             if (blockIdx >= 0 && blockIdx < indexes.size())
             {
                 reader.seekToPosition(columnOffset(blockIdx));
+                mark = reader.file.mark();
                 reader.deserializer.clearState();
             }
 
             currentIndexIdx = blockIdx;
             reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;
-            mark = reader.file.mark();
 
             // If we're reading an old format file and we move to the first block in the index (i.e. the
             // head of the partition), we skip the static row as it's already been read when we first opened

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
index 76d8c4d..d5b46a4 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
@@ -281,6 +281,7 @@ public class SSTableReversedIterator extends AbstractSSTableIterator
             if (startIdx < 0)
             {
                 iterator = Collections.emptyIterator();
+                indexState.setToBlock(startIdx);
                 return;
             }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk

Posted by sa...@apache.org.
Merge branch 'cassandra-3.11' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/25524223
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/25524223
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/25524223

Branch: refs/heads/trunk
Commit: 255242237a49fb27740ab9da187eaa41b0611947
Parents: 3b56d4d 191ad7b
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jun 14 18:19:36 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:22:28 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25524223/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25524223/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
index 443fe49,4eaf8f6..cfc7da2
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@@ -455,7 -492,19 +456,6 @@@ public abstract class AbstractSSTableIt
  
              currentIndexIdx = blockIdx;
              reader.openMarker = blockIdx > 0 ? index(blockIdx - 1).endOpenMarker : null;
-             mark = reader.file.mark();
 -
 -            // If we're reading an old format file and we move to the first block in the index (i.e. the
 -            // head of the partition), we skip the static row as it's already been read when we first opened
 -            // the iterator. If we don't do this and a static row is present, we'll re-read it but treat it
 -            // as a regular row, causing deserialization to blow up later as that row's flags will be invalid
 -            // see CASSANDRA-12088 & CASSANDRA-13236
 -            if (!reader.version.storeRows()
 -                && blockIdx == 0
 -                && reader.deserializer.hasNext()
 -                && reader.deserializer.nextIsStatic())
 -            {
 -                reader.deserializer.skipNext();
 -            }
          }
  
          private long columnOffset(int i) throws IOException

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25524223/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[3/6] cassandra git commit: Update current index block pointer when slice precedes partition start

Posted by sa...@apache.org.
Update current index block pointer when slice precedes partition start

When reverse iterating an indexed sstable partition, if the end bound of
the query slice is < the first unfiltered in the partition, the current
index block pointer is not updated. This causes the reader to incorrectly
jump to the end of the partition and start reading from there once the
initial emtpy iterator has been consumed.

Patch by Sam Tunnicliffe; reviewed by Aleksey Yeschenko and Blake Eggleston
for CASSANDRA-14513


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb91942f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb91942f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb91942f

Branch: refs/heads/trunk
Commit: eb91942f64972bef04c4e965dcdf788ae1f21a60
Parents: 897b55a
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Fri Jun 8 12:57:54 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:15:57 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 94fbcd2..ebf8764 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.17
+ * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513)
  * Fix regression of lagging commitlog flush log message (CASSANDRA-14451)
  * Add Missing dependencies in pom-all (CASSANDRA-14422)
  * Cleanup StartupClusterConnectivityChecker and PING Verb (CASSANDRA-14447)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/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 f9e6545..386b2c8 100644
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@ -420,12 +420,12 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator
             if (blockIdx >= 0 && blockIdx < indexes.size())
             {
                 reader.seekToPosition(columnOffset(blockIdx));
+                mark = reader.file.mark();
                 reader.deserializer.clearState();
             }
 
             currentIndexIdx = blockIdx;
             reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;
-            mark = reader.file.mark();
 
             // If we're reading an old format file and we move to the first block in the index (i.e. the
             // head of the partition), we skip the static row as it's already been read when we first opened

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
index 76d8c4d..d5b46a4 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
@@ -281,6 +281,7 @@ public class SSTableReversedIterator extends AbstractSSTableIterator
             if (startIdx < 0)
             {
                 iterator = Collections.emptyIterator();
+                indexState.setToBlock(startIdx);
                 return;
             }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[2/6] cassandra git commit: Update current index block pointer when slice precedes partition start

Posted by sa...@apache.org.
Update current index block pointer when slice precedes partition start

When reverse iterating an indexed sstable partition, if the end bound of
the query slice is < the first unfiltered in the partition, the current
index block pointer is not updated. This causes the reader to incorrectly
jump to the end of the partition and start reading from there once the
initial emtpy iterator has been consumed.

Patch by Sam Tunnicliffe; reviewed by Aleksey Yeschenko and Blake Eggleston
for CASSANDRA-14513


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb91942f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb91942f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb91942f

Branch: refs/heads/cassandra-3.11
Commit: eb91942f64972bef04c4e965dcdf788ae1f21a60
Parents: 897b55a
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Fri Jun 8 12:57:54 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:15:57 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 94fbcd2..ebf8764 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.17
+ * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513)
  * Fix regression of lagging commitlog flush log message (CASSANDRA-14451)
  * Add Missing dependencies in pom-all (CASSANDRA-14422)
  * Cleanup StartupClusterConnectivityChecker and PING Verb (CASSANDRA-14447)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/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 f9e6545..386b2c8 100644
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@ -420,12 +420,12 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator
             if (blockIdx >= 0 && blockIdx < indexes.size())
             {
                 reader.seekToPosition(columnOffset(blockIdx));
+                mark = reader.file.mark();
                 reader.deserializer.clearState();
             }
 
             currentIndexIdx = blockIdx;
             reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;
-            mark = reader.file.mark();
 
             // If we're reading an old format file and we move to the first block in the index (i.e. the
             // head of the partition), we skip the static row as it's already been read when we first opened

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb91942f/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
index 76d8c4d..d5b46a4 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
@@ -281,6 +281,7 @@ public class SSTableReversedIterator extends AbstractSSTableIterator
             if (startIdx < 0)
             {
                 iterator = Collections.emptyIterator();
+                indexState.setToBlock(startIdx);
                 return;
             }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11

Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.11


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/191ad7b8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/191ad7b8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/191ad7b8

Branch: refs/heads/trunk
Commit: 191ad7b87a4ded26be4ab0bd192ef676f059276c
Parents: f0403b4 eb91942
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jun 14 18:16:23 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:18:47 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 083f480,ebf8764..e807340
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,22 -1,5 +1,23 @@@
 -3.0.17
 +3.11.3
 + * Remove BTree.Builder Recycler to reduce memory usage (CASSANDRA-13929)
 + * Reduce nodetool GC thread count (CASSANDRA-14475)
 + * Fix New SASI view creation during Index Redistribution (CASSANDRA-14055)
 + * Remove string formatting lines from BufferPool hot path (CASSANDRA-14416)
 + * Update metrics to 3.1.5 (CASSANDRA-12924)
 + * Detect OpenJDK jvm type and architecture (CASSANDRA-12793)
 + * Don't use guava collections in the non-system keyspace jmx attributes (CASSANDRA-12271)
 + * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851)
 + * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299)
 + * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370)
 + * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891)
 + * Serialize empty buffer as empty string for json output format (CASSANDRA-14245)
 + * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396)
 + * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247)
 + * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170)
 + * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
 + * Fix wildcard GROUP BY queries (CASSANDRA-14209)
 +Merged from 3.0:
+  * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513)
   * Fix regression of lagging commitlog flush log message (CASSANDRA-14451)
   * Add Missing dependencies in pom-all (CASSANDRA-14422)
   * Cleanup StartupClusterConnectivityChecker and PING Verb (CASSANDRA-14447)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
index c15416f,386b2c8..4eaf8f6
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@@ -483,15 -417,15 +483,15 @@@ public abstract class AbstractSSTableIt
          // Sets the reader to the beginning of blockIdx.
          public void setToBlock(int blockIdx) throws IOException
          {
 -            if (blockIdx >= 0 && blockIdx < indexes.size())
 +            if (blockIdx >= 0 && blockIdx < indexEntry.columnsIndexCount())
              {
                  reader.seekToPosition(columnOffset(blockIdx));
+                 mark = reader.file.mark();
                  reader.deserializer.clearState();
              }
  
              currentIndexIdx = blockIdx;
 -            reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;
 +            reader.openMarker = blockIdx > 0 ? index(blockIdx - 1).endOpenMarker : null;
-             mark = reader.file.mark();
  
              // If we're reading an old format file and we move to the first block in the index (i.e. the
              // head of the partition), we skip the static row as it's already been read when we first opened

http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11

Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.11


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/191ad7b8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/191ad7b8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/191ad7b8

Branch: refs/heads/cassandra-3.11
Commit: 191ad7b87a4ded26be4ab0bd192ef676f059276c
Parents: f0403b4 eb91942
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jun 14 18:16:23 2018 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jun 14 18:18:47 2018 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 .../cassandra/db/columniterator/AbstractSSTableIterator.java       | 2 +-
 .../cassandra/db/columniterator/SSTableReversedIterator.java       | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 083f480,ebf8764..e807340
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,22 -1,5 +1,23 @@@
 -3.0.17
 +3.11.3
 + * Remove BTree.Builder Recycler to reduce memory usage (CASSANDRA-13929)
 + * Reduce nodetool GC thread count (CASSANDRA-14475)
 + * Fix New SASI view creation during Index Redistribution (CASSANDRA-14055)
 + * Remove string formatting lines from BufferPool hot path (CASSANDRA-14416)
 + * Update metrics to 3.1.5 (CASSANDRA-12924)
 + * Detect OpenJDK jvm type and architecture (CASSANDRA-12793)
 + * Don't use guava collections in the non-system keyspace jmx attributes (CASSANDRA-12271)
 + * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851)
 + * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299)
 + * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370)
 + * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891)
 + * Serialize empty buffer as empty string for json output format (CASSANDRA-14245)
 + * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396)
 + * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247)
 + * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170)
 + * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
 + * Fix wildcard GROUP BY queries (CASSANDRA-14209)
 +Merged from 3.0:
+  * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513)
   * Fix regression of lagging commitlog flush log message (CASSANDRA-14451)
   * Add Missing dependencies in pom-all (CASSANDRA-14422)
   * Cleanup StartupClusterConnectivityChecker and PING Verb (CASSANDRA-14447)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
index c15416f,386b2c8..4eaf8f6
--- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@@ -483,15 -417,15 +483,15 @@@ public abstract class AbstractSSTableIt
          // Sets the reader to the beginning of blockIdx.
          public void setToBlock(int blockIdx) throws IOException
          {
 -            if (blockIdx >= 0 && blockIdx < indexes.size())
 +            if (blockIdx >= 0 && blockIdx < indexEntry.columnsIndexCount())
              {
                  reader.seekToPosition(columnOffset(blockIdx));
+                 mark = reader.file.mark();
                  reader.deserializer.clearState();
              }
  
              currentIndexIdx = blockIdx;
 -            reader.openMarker = blockIdx > 0 ? indexes.get(blockIdx - 1).endOpenMarker : null;
 +            reader.openMarker = blockIdx > 0 ? index(blockIdx - 1).endOpenMarker : null;
-             mark = reader.file.mark();
  
              // If we're reading an old format file and we move to the first block in the index (i.e. the
              // head of the partition), we skip the static row as it's already been read when we first opened

http://git-wip-us.apache.org/repos/asf/cassandra/blob/191ad7b8/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java
----------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org