You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2015/12/14 10:59:44 UTC

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

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 <br...@datastax.com>
Authored: Thu Dec 10 15:33:15 2015 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
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)
     {
         FileUtils.createDirectory(compactionFileLocation);
+        SerializationHeader header = sstable.header;
+        if (header == null)
+            header = SerializationHeader.make(sstable.metadata, Collections.singleton(sstable));
 
         return SSTableWriter.create(cfs.metadata,
                                     Descriptor.fromFilename(cfs.getSSTablePath(compactionFileLocation)),
                                     expectedBloomFilterSize,
                                     repairedAt,
                                     sstable.getSSTableLevel(),
-                                    sstable.header,
+                                    header,
                                     txn);
     }
 


[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

Posted by sl...@apache.org.
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: 6bc3637260f287a031f2ea8a7e155a6b7692fe92
Parents: 9bfe613 71bac92
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Dec 14 10:58:53 2015 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Dec 14 10:58:53 2015 +0100

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


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6bc36372/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 0ca5277,a0717c6..7d0ca2e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,22 -1,12 +1,25 @@@
 -3.0.2
 +3.2
 + * Group pending compactions based on table (CASSANDRA-10718)
 + * Add compressor name in sstablemetadata output (CASSANDRA-9879)
 + * Fix type casting for counter columns (CASSANDRA-10824)
 + * Prevent running Cassandra as root (CASSANDRA-8142)
 + * bound maximum in-flight commit log replay mutation bytes to 64 megabytes (CASSANDRA-8639)
 + * Normalize all scripts (CASSANDRA-10679)
 + * Make compression ratio much more accurate (CASSANDRA-10225)
 + * Optimize building of Clustering object when only one is created (CASSANDRA-10409)
 + * Make index building pluggable (CASSANDRA-10681)
 + * Add sstable flush observer (CASSANDRA-10678)
 + * Improve NTS endpoints calculation (CASSANDRA-10200)
 + * Improve performance of the folderSize function (CASSANDRA-10677)
 + * Add support for type casting in selection clause (CASSANDRA-10310)
 + * Added graphing option to cassandra-stress (CASSANDRA-7918)
 + * Abort in-progress queries that time out (CASSANDRA-7392)
 + * Add transparent data encryption core classes (CASSANDRA-9945)
- Merged from 2.2:
++Merged from 3.0:
+  * 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)
 - * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 - * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 - * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
  Merged from 2.1:
   * Make Stress compiles within eclipse (CASSANDRA-10807)
   * Cassandra Daemon should print JVM arguments (CASSANDRA-10764)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6bc36372/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 7a2e71f,2234838..fafab69
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@@ -965,8 -968,7 +968,8 @@@ public class CompactionManager implemen
                                      expectedBloomFilterSize,
                                      repairedAt,
                                      sstable.getSSTableLevel(),
-                                     sstable.header,
+                                     header,
 +                                    cfs.indexManager.listIndexes(),
                                      txn);
      }