Author: slebresne
Date: Wed Sep 14 14:29:28 2011
New Revision: 1170641

URL: http://svn.apache.org/viewvc?rev=1170641&view=rev
Log:
Make ColumnFamily.cloneMeShallow doesn't respect the insertionOrdered flag
patch by slebresne; reviewed by jbellis for CASSANDRA-3205

Modified:
    cassandra/branches/cassandra-1.0.0/CHANGES.txt
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamily.java
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ISortedColumns.java
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ThreadSafeSortedColumns.java
    
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java

Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/CHANGES.txt?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0.0/CHANGES.txt Wed Sep 14 14:29:28 2011
@@ -29,7 +29,7 @@
  * add scheduler JMX metrics (CASSANDRA-2962)
  * add block level checksum for compressed data (CASSANDRA-1717)
  * make column family backed column map pluggable and introduce unsynchronized
-   ArrayList backed one to speedup reads (CASSANDRA-2843, 3165)
+   ArrayList backed one to speedup reads (CASSANDRA-2843, 3165, 3205)
  * refactoring of the secondary index api (CASSANDRA-2982)
  * make CL > ONE reads wait for digest reconciliation before returning
    (CASSANDRA-2494)

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
 Wed Sep 14 14:29:28 2011
@@ -82,6 +82,11 @@ public class ArrayBackedSortedColumns ex
         return new ArrayBackedSortedColumns(this, comparator, reversed);
     }
 
+    public boolean isInsertReversed()
+    {
+        return reversed;
+    }
+
     private int compare(ByteBuffer name1, ByteBuffer name2)
     {
         if (reversed)

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamily.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamily.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamily.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamily.java
 Wed Sep 14 14:29:28 2011
@@ -81,9 +81,9 @@ public class ColumnFamily extends Abstra
         this.cfm = cfm;
     }
     
-    public ColumnFamily cloneMeShallow(ISortedColumns.Factory factory)
+    public ColumnFamily cloneMeShallow(ISortedColumns.Factory factory, boolean 
reversedInsertOrder)
     {
-        ColumnFamily cf = ColumnFamily.create(cfm, factory);
+        ColumnFamily cf = ColumnFamily.create(cfm, factory, 
reversedInsertOrder);
         // since deletion info is immutable, aliasing it is fine
         cf.deletionInfo.set(deletionInfo.get());
         return cf;
@@ -91,7 +91,7 @@ public class ColumnFamily extends Abstra
 
     public ColumnFamily cloneMeShallow()
     {
-        return cloneMeShallow(columns.getFactory());
+        return cloneMeShallow(columns.getFactory(), 
columns.isInsertReversed());
     }
 
     public AbstractType getSubComparator()

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 Wed Sep 14 14:29:28 2011
@@ -1194,7 +1194,7 @@ public class ColumnFamilyStore implement
                     IColumn sc = cached.getColumn(filter.path.superColumnName);
                     if (sc == null || sliceFilter.count >= 
sc.getSubColumns().size())
                     {
-                        ColumnFamily cf = 
cached.cloneMeShallow(ArrayBackedSortedColumns.factory());
+                        ColumnFamily cf = 
cached.cloneMeShallow(ArrayBackedSortedColumns.factory(), 
filter.filter.isReversed());
                         if (sc != null)
                             cf.addColumn(sc, HeapAllocator.instance);
                         return removeDeleted(cf, gcBefore);
@@ -1213,7 +1213,7 @@ public class ColumnFamilyStore implement
         }
 
         IColumnIterator ci = filter.getMemtableColumnIterator(cached, null, 
getComparator());
-        ColumnFamily cf = 
ci.getColumnFamily().cloneMeShallow(ArrayBackedSortedColumns.factory());
+        ColumnFamily cf = 
ci.getColumnFamily().cloneMeShallow(ArrayBackedSortedColumns.factory(), 
filter.filter.isReversed());
         filter.collateColumns(cf, Collections.singletonList(ci), 
getComparator(), gcBefore);
         // TODO this is necessary because when we collate supercolumns 
together, we don't check
         // their subcolumns for relevance, so we need to do a second prune 
post facto here.

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ISortedColumns.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ISortedColumns.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ISortedColumns.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ISortedColumns.java
 Wed Sep 14 14:29:28 2011
@@ -124,6 +124,11 @@ public interface ISortedColumns extends 
      */
     public Iterator<IColumn> reverseIterator();
 
+    /**
+     * Returns if this map only support inserts in reverse order.
+     */
+    public boolean isInsertReversed();
+
     public interface Factory
     {
         /**

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ThreadSafeSortedColumns.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ThreadSafeSortedColumns.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ThreadSafeSortedColumns.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ThreadSafeSortedColumns.java
 Wed Sep 14 14:29:28 2011
@@ -72,6 +72,11 @@ public class ThreadSafeSortedColumns ext
         return new ThreadSafeSortedColumns(this);
     }
 
+    public boolean isInsertReversed()
+    {
+        return false;
+    }
+
     /*
      * If we find an old column that has the same name
      * the ask it to resolve itself else add the new column

Modified: 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java?rev=1170641&r1=1170640&r2=1170641&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
 Wed Sep 14 14:29:28 2011
@@ -72,6 +72,11 @@ public class TreeMapBackedSortedColumns 
         return new TreeMapBackedSortedColumns(this);
     }
 
+    public boolean isInsertReversed()
+    {
+        return false;
+    }
+
     /*
      * If we find an old column that has the same name
      * the ask it to resolve itself else add the new column


Reply via email to