[1/2] cassandra git commit: Fix missing row data after range tombstone in legacy data

2015-12-14 Thread jake
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.1.1 [created] 8347d3771


Fix missing row data after range tombstone in legacy data

patch by blambov; reviewed by slebresne for CASSANDRA-10822

Conflicts:
CHANGES.txt


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

Branch: refs/heads/cassandra-3.1.1
Commit: feaed2a4362500f2b79fc90a728b50656338af00
Parents: e092873
Author: Branimir Lambov 
Authored: Thu Dec 10 15:33:15 2015 +0200
Committer: T Jake Luciani 
Committed: Mon Dec 14 12:19:17 2015 -0500

--
 CHANGES.txt  |  4 
 .../org/apache/cassandra/db/UnfilteredDeserializer.java  | 11 +--
 .../cassandra/db/compaction/CompactionManager.java   |  5 -
 3 files changed, 13 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/feaed2a4/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a2e9434..dce2a06 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,7 @@
+3.1.1
+ * Fix upgrade data loss due to range tombstone deleting more data than then 
should
+   (CASSANDRA-10822)
+   
 3.1
 Merged from 3.0:
  * Avoid MV race during node decommission (CASSANDRA-10674)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/feaed2a4/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
--
diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java 
b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
index 66f6b71..bf9c2b8 100644
--- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
+++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
@@ -406,7 +406,7 @@ public abstract class UnfilteredDeserializer
 
 public boolean hasNext()
 {
-// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below.
+// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below or the atom might be 
shadowed.
 while (next == null)
 {
 if (atoms.hasNext())
@@ -419,7 +419,8 @@ public abstract class UnfilteredDeserializer
 else
 {
 LegacyLayout.LegacyAtom atom = atoms.next();
-next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
+if (!tombstoneTracker.isShadowed(atom))
+next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
 }
 }
 else if (tombstoneTracker.hasOpenTombstones())
@@ -498,7 +499,7 @@ public abstract class UnfilteredDeserializer
 if (isDone)
 return false;
 
-while (next == null)
+if (next == null)
 {
 next = readAtom();
 if (next == null)
@@ -506,9 +507,6 @@ public abstract class UnfilteredDeserializer
 isDone = true;
 return false;
 }
-
-if (tombstoneTracker.isShadowed(next))
-next = null;
 }
 return true;
 }
@@ -576,6 +574,7 @@ public abstract class UnfilteredDeserializer
  */
 public boolean isShadowed(LegacyLayout.LegacyAtom atom)
 {
+assert !hasClosingMarkerBefore(atom);
 long timestamp = atom.isCell() ? atom.asCell().timestamp : 
atom.asRangeTombstone().deletionTime.markedForDeleteAt();
 
 if (partitionDeletion.deletes(timestamp))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/feaed2a4/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
--
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 3ce7d2c..0deaf44 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -958,13 +958,16 @@ public class CompactionManager implements 
CompactionManagerMBean
  LifecycleTransaction txn)
 {
 FileUtils.

[1/2] cassandra git commit: Fix missing row data after range tombstone in legacy data

2015-12-14 Thread jake
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0.2 [created] f0d235f58


Fix missing row data after range tombstone in legacy data

patch by blambov; reviewed by slebresne for CASSANDRA-10822

Conflicts:
CHANGES.txt


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

Branch: refs/heads/cassandra-3.0.2
Commit: a5c731b5908c3ccb19596e4b79f92ff93093089f
Parents: cf56770
Author: Branimir Lambov 
Authored: Thu Dec 10 15:33:15 2015 +0200
Committer: T Jake Luciani 
Committed: Mon Dec 14 11:56:23 2015 -0500

--
 CHANGES.txt  |  6 ++
 .../org/apache/cassandra/db/UnfilteredDeserializer.java  | 11 +--
 .../cassandra/db/compaction/CompactionManager.java   |  5 -
 3 files changed, 15 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5c731b5/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index b95aa76..8ea6e91 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,7 @@
+3.0.2
+ * Fix upgrade data loss due to range tombstone deleting more data than then 
should
+   (CASSANDRA-10822)
+
 3.0.1
  * Avoid MV race during node decommission (CASSANDRA-10674)
  * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
@@ -25,6 +29,8 @@
  * Keep the file open in trySkipCache (CASSANDRA-10669)
  * Updated trigger example (CASSANDRA-10257)
 Merged from 2.2:
+ * Fix regression on split size in CqlInputFormat (CASSANDRA-10835)
+ * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
  * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
  * Fix IllegalArgumentException in DataOutputBuffer.reallocate for large 
buffers (CASSANDRA-10592)
  * Show CQL help in cqlsh in web browser (CASSANDRA-7225)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5c731b5/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
--
diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java 
b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
index 66f6b71..bf9c2b8 100644
--- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
+++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
@@ -406,7 +406,7 @@ public abstract class UnfilteredDeserializer
 
 public boolean hasNext()
 {
-// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below.
+// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below or the atom might be 
shadowed.
 while (next == null)
 {
 if (atoms.hasNext())
@@ -419,7 +419,8 @@ public abstract class UnfilteredDeserializer
 else
 {
 LegacyLayout.LegacyAtom atom = atoms.next();
-next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
+if (!tombstoneTracker.isShadowed(atom))
+next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
 }
 }
 else if (tombstoneTracker.hasOpenTombstones())
@@ -498,7 +499,7 @@ public abstract class UnfilteredDeserializer
 if (isDone)
 return false;
 
-while (next == null)
+if (next == null)
 {
 next = readAtom();
 if (next == null)
@@ -506,9 +507,6 @@ public abstract class UnfilteredDeserializer
 isDone = true;
 return false;
 }
-
-if (tombstoneTracker.isShadowed(next))
-next = null;
 }
 return true;
 }
@@ -576,6 +574,7 @@ public abstract class UnfilteredDeserializer
  */
 public boolean isShadowed(LegacyLayout.LegacyAtom atom)
 {
+assert !hasClosingMarkerBefore(atom);
 long timestamp = atom.isCell() ? atom.asCell().timestamp : 
atom.asRangeTombstone().deletionTime.markedForDeleteAt();
 
 if (partitionDeletion.deletes(timestamp))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5c731b5/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
--

[1/2] cassandra git commit: Fix missing row data after range tombstone in legacy data

2015-12-14 Thread slebresne
Repository: cassandra
Updated Branches:
  refs/heads/trunk 9bfe61357 -> 6bc363726


Fix missing row data after range tombstone in legacy data

patch by blambov; reviewed by slebresne for CASSANDRA-10822


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

Branch: refs/heads/trunk
Commit: 71bac92cf1df08de194a8283f382a7950b3a78ed
Parents: 94e8d62
Author: Branimir Lambov 
Authored: Thu Dec 10 15:33:15 2015 +0200
Committer: Sylvain Lebresne 
Committed: Mon Dec 14 10:57:20 2015 +0100

--
 CHANGES.txt  |  2 ++
 .../org/apache/cassandra/db/UnfilteredDeserializer.java  | 11 +--
 .../cassandra/db/compaction/CompactionManager.java   |  5 -
 3 files changed, 11 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index c30d35d..a0717c6 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
 3.0.2
+ * Fix upgrade data loss due to range tombstone deleting more data than then 
should
+   (CASSANDRA-10822)
 Merged from 2.2
  * Add property to allow listening on broadcast interface (CASSANDRA-9748)
  * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
--
diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java 
b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
index 66f6b71..bf9c2b8 100644
--- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
+++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
@@ -406,7 +406,7 @@ public abstract class UnfilteredDeserializer
 
 public boolean hasNext()
 {
-// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below.
+// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below or the atom might be 
shadowed.
 while (next == null)
 {
 if (atoms.hasNext())
@@ -419,7 +419,8 @@ public abstract class UnfilteredDeserializer
 else
 {
 LegacyLayout.LegacyAtom atom = atoms.next();
-next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
+if (!tombstoneTracker.isShadowed(atom))
+next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
 }
 }
 else if (tombstoneTracker.hasOpenTombstones())
@@ -498,7 +499,7 @@ public abstract class UnfilteredDeserializer
 if (isDone)
 return false;
 
-while (next == null)
+if (next == null)
 {
 next = readAtom();
 if (next == null)
@@ -506,9 +507,6 @@ public abstract class UnfilteredDeserializer
 isDone = true;
 return false;
 }
-
-if (tombstoneTracker.isShadowed(next))
-next = null;
 }
 return true;
 }
@@ -576,6 +574,7 @@ public abstract class UnfilteredDeserializer
  */
 public boolean isShadowed(LegacyLayout.LegacyAtom atom)
 {
+assert !hasClosingMarkerBefore(atom);
 long timestamp = atom.isCell() ? atom.asCell().timestamp : 
atom.asRangeTombstone().deletionTime.markedForDeleteAt();
 
 if (partitionDeletion.deletes(timestamp))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
--
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index bd950e3..2234838 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -959,13 +959,16 @@ public class CompactionManager implements 
CompactionManagerMBean
  LifecycleTransaction txn)
  

cassandra git commit: Fix missing row data after range tombstone in legacy data

2015-12-14 Thread slebresne
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 94e8d62cf -> 71bac92cf


Fix missing row data after range tombstone in legacy data

patch by blambov; reviewed by slebresne for CASSANDRA-10822


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

Branch: refs/heads/cassandra-3.0
Commit: 71bac92cf1df08de194a8283f382a7950b3a78ed
Parents: 94e8d62
Author: Branimir Lambov 
Authored: Thu Dec 10 15:33:15 2015 +0200
Committer: Sylvain Lebresne 
Committed: Mon Dec 14 10:57:20 2015 +0100

--
 CHANGES.txt  |  2 ++
 .../org/apache/cassandra/db/UnfilteredDeserializer.java  | 11 +--
 .../cassandra/db/compaction/CompactionManager.java   |  5 -
 3 files changed, 11 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index c30d35d..a0717c6 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
 3.0.2
+ * Fix upgrade data loss due to range tombstone deleting more data than then 
should
+   (CASSANDRA-10822)
 Merged from 2.2
  * Add property to allow listening on broadcast interface (CASSANDRA-9748)
  * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
--
diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java 
b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
index 66f6b71..bf9c2b8 100644
--- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
+++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
@@ -406,7 +406,7 @@ public abstract class UnfilteredDeserializer
 
 public boolean hasNext()
 {
-// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below.
+// Note that we loop on next == null because 
TombstoneTracker.openNew() could return null below or the atom might be 
shadowed.
 while (next == null)
 {
 if (atoms.hasNext())
@@ -419,7 +419,8 @@ public abstract class UnfilteredDeserializer
 else
 {
 LegacyLayout.LegacyAtom atom = atoms.next();
-next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
+if (!tombstoneTracker.isShadowed(atom))
+next = isRow(atom) ? readRow(atom) : 
tombstoneTracker.openNew(atom.asRangeTombstone());
 }
 }
 else if (tombstoneTracker.hasOpenTombstones())
@@ -498,7 +499,7 @@ public abstract class UnfilteredDeserializer
 if (isDone)
 return false;
 
-while (next == null)
+if (next == null)
 {
 next = readAtom();
 if (next == null)
@@ -506,9 +507,6 @@ public abstract class UnfilteredDeserializer
 isDone = true;
 return false;
 }
-
-if (tombstoneTracker.isShadowed(next))
-next = null;
 }
 return true;
 }
@@ -576,6 +574,7 @@ public abstract class UnfilteredDeserializer
  */
 public boolean isShadowed(LegacyLayout.LegacyAtom atom)
 {
+assert !hasClosingMarkerBefore(atom);
 long timestamp = atom.isCell() ? atom.asCell().timestamp : 
atom.asRangeTombstone().deletionTime.markedForDeleteAt();
 
 if (partitionDeletion.deletes(timestamp))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/71bac92c/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
--
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index bd950e3..2234838 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -959,13 +959,16 @@ public class CompactionManager implements 
CompactionManagerMBean
  LifecycleTra