You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2014/02/03 18:36:19 UTC

git commit: Improve custom 2i performance and abstraction Patch by Miguel Angel Fernandez Diaz, reviewed by Sam Tunnicliffe for CASSANDRA-6640

Updated Branches:
  refs/heads/trunk aa29b6af6 -> fc91071c0


Improve custom 2i performance and abstraction
Patch by Miguel Angel Fernandez Diaz, reviewed by Sam Tunnicliffe for
CASSANDRA-6640


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

Branch: refs/heads/trunk
Commit: fc91071c01c33500774de83944bf5f937397c089
Parents: aa29b6a
Author: Brandon Williams <br...@apache.org>
Authored: Mon Feb 3 11:33:37 2014 -0600
Committer: Brandon Williams <br...@apache.org>
Committed: Mon Feb 3 11:33:37 2014 -0600

----------------------------------------------------------------------
 .../db/index/AbstractSimplePerColumnSecondaryIndex.java       | 7 +++++--
 .../apache/cassandra/db/index/PerColumnSecondaryIndex.java    | 3 ++-
 .../org/apache/cassandra/db/index/SecondaryIndexManager.java  | 7 +++----
 test/unit/org/apache/cassandra/db/RangeTombstoneTest.java     | 2 +-
 .../org/apache/cassandra/db/SecondaryIndexCellSizeTest.java   | 2 +-
 5 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc91071c/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index 5987d7a..e2a6608 100644
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@ -135,9 +135,12 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec
         indexCfs.apply(valueKey, cfi, SecondaryIndexManager.nullUpdater, opGroup, null);
     }
 
-    public void update(ByteBuffer rowKey, Cell col, OpOrder.Group opGroup)
-    {
+    public void update(ByteBuffer rowKey, Cell oldCol, Cell col, OpOrder.Group opGroup)
+    {        
+        // 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                    
         insert(rowKey, col, opGroup);
+        delete(rowKey, oldCol, opGroup);
     }
 
     public void removeIndex(ByteBuffer columnName)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc91071c/src/java/org/apache/cassandra/db/index/PerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/PerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/PerColumnSecondaryIndex.java
index e094c4c..79087d2 100644
--- a/src/java/org/apache/cassandra/db/index/PerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/PerColumnSecondaryIndex.java
@@ -49,9 +49,10 @@ public abstract class PerColumnSecondaryIndex extends SecondaryIndex
      * update a column from the index
      *
      * @param rowKey the underlying row key which is indexed
+     * @param oldCol the previous column info
      * @param col all the column info
      */
-    public abstract void update(ByteBuffer rowKey, Cell col, OpOrder.Group opGroup);
+    public abstract void update(ByteBuffer rowKey, Cell oldCol, Cell col, OpOrder.Group opGroup);
 
     public String getNameForSystemKeyspace(ByteBuffer column)
     {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc91071c/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 66e549d..946e3be 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -676,11 +676,10 @@ public class SecondaryIndexManager
             {
                 if (index instanceof PerColumnSecondaryIndex)
                 {
-                    // 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 (!cell.isMarkedForDelete(System.currentTimeMillis()))
-                        ((PerColumnSecondaryIndex) index).insert(key.key, cell, opGroup);
-                    ((PerColumnSecondaryIndex) index).delete(key.key, oldCell, opGroup);
+                        ((PerColumnSecondaryIndex) index).update(key.key, oldCell, cell, opGroup);
+                    else
+                        ((PerColumnSecondaryIndex) index).delete(key.key, oldCell, opGroup);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc91071c/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java b/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java
index b859023..1885716 100644
--- a/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java
+++ b/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java
@@ -452,7 +452,7 @@ public class RangeTombstoneTest extends SchemaLoader
             inserts.add(col);
         }
 
-        public void update(ByteBuffer rowKey, Cell col, OpOrder.Group opGroup){}
+        public void update(ByteBuffer rowKey, Cell oldCol, Cell col, OpOrder.Group opGroup){}
 
         public void init(){}
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc91071c/test/unit/org/apache/cassandra/db/SecondaryIndexCellSizeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexCellSizeTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexCellSizeTest.java
index 87ae58b..220e3b9 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexCellSizeTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexCellSizeTest.java
@@ -209,7 +209,7 @@ public class SecondaryIndexCellSizeTest
         }
 
         @Override
-        public void update(ByteBuffer rowKey, Cell col, OpOrder.Group opGroup)
+        public void update(ByteBuffer rowKey, Cell oldCol, Cell col, OpOrder.Group opGroup)
         {
         }