You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/05/10 00:41:47 UTC

[1/3] git commit: fix 2i updates with indentical values and timestamps patch by Sam Tunnicliffe; reviewed by jbellis for CASSANDRA-5540

Updated Branches:
  refs/heads/cassandra-1.2 6db71b29d -> 95cf9a5f0
  refs/heads/trunk ce6429dc6 -> 156fb112d


fix 2i updates with indentical values and timestamps
patch by Sam Tunnicliffe; reviewed by jbellis for CASSANDRA-5540


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

Branch: refs/heads/cassandra-1.2
Commit: 95cf9a5f0d5c437a9e042018eadc698e3fd5f9e0
Parents: 6db71b2
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu May 9 17:38:23 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu May 9 17:39:38 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../db/compaction/LazilyCompactedRow.java          |    2 +-
 .../cassandra/db/compaction/PrecompactedRow.java   |    2 +-
 .../cassandra/db/index/SecondaryIndexManager.java  |    7 ++++++-
 4 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ca3f130..dfe3015 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.5
+ * fix 2i updates with indentical values and timestamps (CASSANDRA-5540)
  * fix compaction throttling bursty-ness (CASSANDRA-4316)
  * reduce memory consumption of IndexSummary (CASSANDRA-5506)
  * remove per-row column name bloom filters (CASSANDRA-5492)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
index 48b5b7d..1433add 100644
--- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
@@ -256,7 +256,7 @@ public class LazilyCompactedRow extends AbstractCompactedRow implements Iterable
                 container.addColumn(column);
                 if (indexer != SecondaryIndexManager.nullUpdater
                     && !column.isMarkedForDelete()
-                    && container.getColumn(column.name()) != column)
+                    && !container.getColumn(column.name()).equals(column))
                 {
                     indexer.remove(column);
                 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
index 34ddb88..b1f639e 100644
--- a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
@@ -141,7 +141,7 @@ public class PrecompactedRow extends AbstractCompactedRow
                 container.addColumn(column);
                 if (indexer != SecondaryIndexManager.nullUpdater
                     && !column.isMarkedForDelete()
-                    && container.getColumn(column.name()) != column)
+                    && !container.getColumn(column.name()).equals(column))
                 {
                     indexer.remove(column);
                 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index 3b27614..2f03515 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -616,15 +616,20 @@ public class SecondaryIndexManager
 
         public void update(IColumn oldColumn, IColumn column)
         {
+            if (oldColumn.equals(column))
+                return;
+
             SecondaryIndex index = indexFor(column.name());
             if (index == null)
                 return;
 
             if (index instanceof PerColumnSecondaryIndex)
             {
-                ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
+                // insert the new value before removing the old one, so we never have a period
+                // where the row is invisible to both queries (the opposite seems preferable); see CASSANDRA-5540
                 if (!column.isMarkedForDelete())
                     ((PerColumnSecondaryIndex) index).insert(key.key, column);
+                ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
             }
         }
 


[3/3] git commit: merge from 1.2

Posted by jb...@apache.org.
merge from 1.2


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

Branch: refs/heads/trunk
Commit: 156fb112dc37470614e01c037e797e83afda93d8
Parents: ce6429d 95cf9a5
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu May 9 17:41:41 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu May 9 17:41:41 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../db/compaction/LazilyCompactedRow.java          |    2 +-
 .../cassandra/db/compaction/PrecompactedRow.java   |    2 +-
 .../cassandra/db/index/SecondaryIndexManager.java  |    7 ++++++-
 4 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/156fb112/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 4762fdd,dfe3015..42ab6d4
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,50 -1,5 +1,51 @@@
 +2.0
 + * Single-pass compaction (CASSANDRA-4180)
 + * Removed token range bisection (CASSANDRA-5518)
 + * Removed compatibility with pre-1.2.5 sstables and network messages
 +   (CASSANDRA-5511)
 + * removed PBSPredictor (CASSANDRA-5455)
 + * CAS support (CASSANDRA-5062, 5441, 5443)
 + * Leveled compaction performs size-tiered compactions in L0 
 +   (CASSANDRA-5371, 5439)
 + * Add yaml network topology snitch for mixed ec2/other envs (CASSANDRA-5339)
 + * Log when a node is down longer than the hint window (CASSANDRA-4554)
 + * Optimize tombstone creation for ExpiringColumns (CASSANDRA-4917)
 + * Improve LeveledScanner work estimation (CASSANDRA-5250, 5407)
 + * Replace compaction lock with runWithCompactionsDisabled (CASSANDRA-3430)
 + * Change Message IDs to ints (CASSANDRA-5307)
 + * Move sstable level information into the Stats component, removing the
 +   need for a separate Manifest file (CASSANDRA-4872)
 + * avoid serializing to byte[] on commitlog append (CASSANDRA-5199)
 + * make index_interval configurable per columnfamily (CASSANDRA-3961)
 + * add default_time_to_live (CASSANDRA-3974)
 + * add memtable_flush_period_in_ms (CASSANDRA-4237)
 + * replace supercolumns internally by composites (CASSANDRA-3237, 5123)
 + * upgrade thrift to 0.9.0 (CASSANDRA-3719)
 + * drop unnecessary keyspace parameter from user-defined compaction API 
 +   (CASSANDRA-5139)
 + * more robust solution to incomplete compactions + counters (CASSANDRA-5151)
 + * Change order of directory searching for c*.in.sh (CASSANDRA-3983)
 + * Add tool to reset SSTable compaction level for LCS (CASSANDRA-5271)
 + * Allow custom configuration loader (CASSANDRA-5045)
 + * Remove memory emergency pressure valve logic (CASSANDRA-3534)
 + * Reduce request latency with eager retry (CASSANDRA-4705)
 + * cqlsh: Remove ASSUME command (CASSANDRA-5331)
 + * Rebuild BF when loading sstables if bloom_filter_fp_chance
 +   has changed since compaction (CASSANDRA-5015)
 + * remove row-level bloom filters (CASSANDRA-4885)
 + * Change Kernel Page Cache skipping into row preheating (disabled by default)
 +   (CASSANDRA-4937)
 + * Improve repair by deciding on a gcBefore before sending
 +   out TreeRequests (CASSANDRA-4932)
 + * Add an official way to disable compactions (CASSANDRA-5074)
 + * Reenable ALTER TABLE DROP with new semantics (CASSANDRA-3919)
 + * Add binary protocol versioning (CASSANDRA-5436)
 + * Swap THshaServer for TThreadedSelectorServer (CASSANDRA-5530)
 + * Add alias support to SELECT statement (CASSANDRA-5075)
 +
 +
  1.2.5
+  * fix 2i updates with indentical values and timestamps (CASSANDRA-5540)
   * fix compaction throttling bursty-ness (CASSANDRA-4316)
   * reduce memory consumption of IndexSummary (CASSANDRA-5506)
   * remove per-row column name bloom filters (CASSANDRA-5492)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/156fb112/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/156fb112/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/156fb112/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index 2550d8c,2f03515..0bf455a
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@@ -587,23 -606,30 +587,28 @@@ public class SecondaryIndexManage
              if (column.isMarkedForDelete())
                  return;
  
 -            SecondaryIndex index = indexFor(column.name());
 -            if (index == null)
 -                return;
 -
 -            if (index instanceof PerColumnSecondaryIndex)
 -                ((PerColumnSecondaryIndex) index).insert(key.key, column);
 +            for (SecondaryIndex index : indexFor(column.name()))
 +            {
 +                if (index instanceof PerColumnSecondaryIndex)
 +                    ((PerColumnSecondaryIndex) index).insert(key.key, column);
 +            }
          }
  
 -        public void update(IColumn oldColumn, IColumn column)
 +        public void update(Column oldColumn, Column column)
          {
+             if (oldColumn.equals(column))
+                 return;
 -
 -            SecondaryIndex index = indexFor(column.name());
 -            if (index == null)
 -                return;
 -
 -            if (index instanceof PerColumnSecondaryIndex)
++            
 +            for (SecondaryIndex index : indexFor(column.name()))
              {
 -                // insert the new value before removing the old one, so we never have a period
 -                // where the row is invisible to both queries (the opposite seems preferable); see CASSANDRA-5540
 -                if (!column.isMarkedForDelete())
 -                    ((PerColumnSecondaryIndex) index).insert(key.key, column);
 -                ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
 +                if (index instanceof PerColumnSecondaryIndex)
 +                {
-                     ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
++                    // insert the new value before removing the old one, so we never have a period
++                    // where the row is invisible to both queries (the opposite seems preferable); see CASSANDRA-5540
 +                    if (!column.isMarkedForDelete())
 +                        ((PerColumnSecondaryIndex) index).insert(key.key, column);
++                    ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
 +                }
              }
          }
  


[2/3] git commit: fix 2i updates with indentical values and timestamps patch by Sam Tunnicliffe; reviewed by jbellis for CASSANDRA-5540

Posted by jb...@apache.org.
fix 2i updates with indentical values and timestamps
patch by Sam Tunnicliffe; reviewed by jbellis for CASSANDRA-5540


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

Branch: refs/heads/trunk
Commit: 95cf9a5f0d5c437a9e042018eadc698e3fd5f9e0
Parents: 6db71b2
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu May 9 17:38:23 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu May 9 17:39:38 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../db/compaction/LazilyCompactedRow.java          |    2 +-
 .../cassandra/db/compaction/PrecompactedRow.java   |    2 +-
 .../cassandra/db/index/SecondaryIndexManager.java  |    7 ++++++-
 4 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ca3f130..dfe3015 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.5
+ * fix 2i updates with indentical values and timestamps (CASSANDRA-5540)
  * fix compaction throttling bursty-ness (CASSANDRA-4316)
  * reduce memory consumption of IndexSummary (CASSANDRA-5506)
  * remove per-row column name bloom filters (CASSANDRA-5492)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
index 48b5b7d..1433add 100644
--- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
@@ -256,7 +256,7 @@ public class LazilyCompactedRow extends AbstractCompactedRow implements Iterable
                 container.addColumn(column);
                 if (indexer != SecondaryIndexManager.nullUpdater
                     && !column.isMarkedForDelete()
-                    && container.getColumn(column.name()) != column)
+                    && !container.getColumn(column.name()).equals(column))
                 {
                     indexer.remove(column);
                 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
index 34ddb88..b1f639e 100644
--- a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
@@ -141,7 +141,7 @@ public class PrecompactedRow extends AbstractCompactedRow
                 container.addColumn(column);
                 if (indexer != SecondaryIndexManager.nullUpdater
                     && !column.isMarkedForDelete()
-                    && container.getColumn(column.name()) != column)
+                    && !container.getColumn(column.name()).equals(column))
                 {
                     indexer.remove(column);
                 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95cf9a5f/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index 3b27614..2f03515 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -616,15 +616,20 @@ public class SecondaryIndexManager
 
         public void update(IColumn oldColumn, IColumn column)
         {
+            if (oldColumn.equals(column))
+                return;
+
             SecondaryIndex index = indexFor(column.name());
             if (index == null)
                 return;
 
             if (index instanceof PerColumnSecondaryIndex)
             {
-                ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
+                // insert the new value before removing the old one, so we never have a period
+                // where the row is invisible to both queries (the opposite seems preferable); see CASSANDRA-5540
                 if (!column.isMarkedForDelete())
                     ((PerColumnSecondaryIndex) index).insert(key.key, column);
+                ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
             }
         }