Update deletion timestamps in Commit#updatesWithPaxosTime

patch by slebresne; reviewed by jbellis for CASSANDRA-5787


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

Branch: refs/heads/trunk
Commit: 37130b5998e060b52c379fbd726d61e3e7926a3c
Parents: c7220e3
Author: Sylvain Lebresne <[email protected]>
Authored: Mon Jul 22 15:44:55 2013 +0200
Committer: Sylvain Lebresne <[email protected]>
Committed: Mon Jul 22 15:44:55 2013 +0200

----------------------------------------------------------------------
 CHANGES.txt                                              |  1 +
 src/java/org/apache/cassandra/db/DeletionInfo.java       | 10 ++++++++++
 src/java/org/apache/cassandra/db/RangeTombstoneList.java |  6 ++++++
 src/java/org/apache/cassandra/service/paxos/Commit.java  |  1 +
 4 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/37130b59/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4d56c98..20a6373 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -14,6 +14,7 @@
  * Support streaming SSTables of old versions (CASSANDRA-5772)
  * Always respect protocol version in native protocol (CASSANDRA-5778)
  * Fix ConcurrentModificationException during streaming (CASSANDRA-5782)
+ * Update deletion timestamp in Commit#updatesWithPaxosTime (CASSANDRA-5787)
 
 
 2.0.0-beta1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/37130b59/src/java/org/apache/cassandra/db/DeletionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionInfo.java 
b/src/java/org/apache/cassandra/db/DeletionInfo.java
index 49aa427..32cc2a7 100644
--- a/src/java/org/apache/cassandra/db/DeletionInfo.java
+++ b/src/java/org/apache/cassandra/db/DeletionInfo.java
@@ -265,6 +265,16 @@ public class DeletionInfo
         return sb.toString();
     }
 
+    // Updates all the timestamp of the deletion contained in this 
DeletionInfo to be {@code timestamp}.
+    public void updateAllTimestamp(long timestamp)
+    {
+        if (topLevel.markedForDeleteAt != Long.MIN_VALUE)
+            topLevel = new DeletionTime(timestamp, topLevel.localDeletionTime);
+
+        if (ranges != null)
+            ranges.updateAllTimestamp(timestamp);
+    }
+
     @Override
     public boolean equals(Object o)
     {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/37130b59/src/java/org/apache/cassandra/db/RangeTombstoneList.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeTombstoneList.java 
b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
index 771b1a8..e99ed9f 100644
--- a/src/java/org/apache/cassandra/db/RangeTombstoneList.java
+++ b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
@@ -288,6 +288,12 @@ public class RangeTombstoneList implements 
Iterable<RangeTombstone>
         return max;
     }
 
+    public void updateAllTimestamp(long timestamp)
+    {
+        for (int i = 0; i < size; i++)
+            markedAts[i] = timestamp;
+    }
+
     /**
      * Removes all range tombstones whose local deletion time is older than 
gcBefore.
      */

http://git-wip-us.apache.org/repos/asf/cassandra/blob/37130b59/src/java/org/apache/cassandra/service/paxos/Commit.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/paxos/Commit.java 
b/src/java/org/apache/cassandra/service/paxos/Commit.java
index fdc707b..04ddca8 100644
--- a/src/java/org/apache/cassandra/service/paxos/Commit.java
+++ b/src/java/org/apache/cassandra/service/paxos/Commit.java
@@ -114,6 +114,7 @@ public class Commit
     {
         ColumnFamily cf = updates.cloneMeShallow();
         long t = UUIDGen.microsTimestamp(ballot);
+        cf.deletionInfo().updateAllTimestamp(t);
         for (Column column : updates)
             cf.addAtom(column.withUpdatedTimestamp(t));
         return cf;

Reply via email to