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

[3/3] git commit: ColumnFamily-related cleanups

ColumnFamily-related cleanups

patch by Aleksey Yeschenko; reviewed by Benedict Elliott Smith for
CASSANDRA-6662


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

Branch: refs/heads/trunk
Commit: 0e43885ab24768177cc1e758e1ab69b6dc1b23db
Parents: 5a3ffc0
Author: Aleksey Yeschenko <al...@yeschenko.com>
Authored: Sun Feb 9 06:22:47 2014 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Feb 11 20:35:31 2014 +0300

----------------------------------------------------------------------
 .../cassandra/db/ArrayBackedSortedColumns.java  | 56 +++++---------------
 .../apache/cassandra/db/AtomicBTreeColumns.java | 15 +-----
 .../cassandra/db/CollationController.java       |  5 +-
 .../org/apache/cassandra/db/ColumnFamily.java   | 50 ++---------------
 .../apache/cassandra/db/ColumnFamilyStore.java  | 23 ++++----
 .../org/apache/cassandra/db/EmptyColumns.java   | 18 ++-----
 .../db/TreeMapBackedSortedColumns.java          | 47 ++--------------
 .../cassandra/db/index/keys/KeysSearcher.java   |  6 +--
 .../db/ArrayBackedSortedColumnsTest.java        | 25 ++++-----
 .../apache/cassandra/db/ColumnFamilyTest.java   | 15 +++---
 10 files changed, 58 insertions(+), 202 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java b/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
index b81e403..ba082e9 100644
--- a/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
+++ b/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
@@ -29,7 +29,6 @@ import org.apache.cassandra.db.composites.CellName;
 import org.apache.cassandra.db.composites.CellNameType;
 import org.apache.cassandra.db.composites.Composite;
 import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.utils.memory.AbstractAllocator;
 
 /**
  * A ColumnFamily backed by an ArrayList.
@@ -55,14 +54,14 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
     {
         super(metadata);
         this.reversed = reversed;
-        this.cells = new ArrayList<Cell>();
+        this.cells = new ArrayList<>();
     }
 
     private ArrayBackedSortedColumns(Collection<Cell> cells, CFMetaData metadata, boolean reversed)
     {
         super(metadata);
         this.reversed = reversed;
-        this.cells = new ArrayList<Cell>(cells);
+        this.cells = new ArrayList<>(cells);
     }
 
     public ColumnFamily.Factory getFactory()
@@ -91,7 +90,7 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
         return pos >= 0 ? cells.get(pos) : null;
     }
 
-    public void addColumn(Cell cell, AbstractAllocator allocator)
+    public void addColumn(Cell cell)
     {
         if (cells.isEmpty())
         {
@@ -109,13 +108,13 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
         else if (c == 0)
         {
             // Resolve against last
-            resolveAgainst(getColumnCount() - 1, cell, allocator);
+            resolveAgainst(getColumnCount() - 1, cell);
         }
         else
         {
             int pos = binarySearch(cell.name());
             if (pos >= 0)
-                resolveAgainst(pos, cell, allocator);
+                resolveAgainst(pos, cell);
             else
                 cells.add(-pos - 1, cell);
         }
@@ -125,13 +124,9 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
      * Resolve against element at position i.
      * Assume that i is a valid position.
      */
-    private void resolveAgainst(int i, Cell cell, AbstractAllocator allocator)
+    private void resolveAgainst(int i, Cell cell)
     {
-        Cell oldCell = cells.get(i);
-
-        // calculate reconciled col from old (existing) col and new col
-        Cell reconciledCell = cell.reconcile(oldCell, allocator);
-        cells.set(i, reconciledCell);
+        cells.set(i, cell.reconcile(cells.get(i)));
     }
 
     private int binarySearch(CellName name)
@@ -155,22 +150,16 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
         {
             mid = (low + high) >> 1;
             if ((result = comparator.compare(name, cells.get(mid).name())) > 0)
-            {
                 low = mid + 1;
-            }
             else if (result == 0)
-            {
                 return mid;
-            }
             else
-            {
                 high = mid - 1;
-            }
         }
         return -mid - (result < 0 ? 1 : 2);
     }
 
-    public void addAll(ColumnFamily cm, AbstractAllocator allocator, Function<Cell, Cell> transformation)
+    public void addAll(ColumnFamily cm)
     {
         delete(cm.deletionInfo());
         if (cm.getColumnCount() == 0)
@@ -193,42 +182,28 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
             }
             else if (c > 0)
             {
-                cells.add(transformation.apply(otherCell));
+                cells.add(otherCell);
                 otherCell = other.hasNext() ? other.next() : null;
             }
             else // c == 0
             {
                 cells.add(copy[idx]);
-                resolveAgainst(getColumnCount() - 1, transformation.apply(otherCell), allocator);
+                resolveAgainst(getColumnCount() - 1, otherCell);
                 idx++;
                 otherCell = other.hasNext() ? other.next() : null;
             }
         }
+
         while (idx < copy.length)
-        {
             cells.add(copy[idx++]);
-        }
+
         while (otherCell != null)
         {
-            cells.add(transformation.apply(otherCell));
+            cells.add(otherCell);
             otherCell = other.hasNext() ? other.next() : null;
         }
     }
 
-    public boolean replace(Cell oldCell, Cell newCell)
-    {
-        if (!oldCell.name().equals(newCell.name()))
-            throw new IllegalArgumentException();
-
-        int pos = binarySearch(oldCell.name());
-        if (pos >= 0)
-        {
-            cells.set(pos, newCell);
-        }
-
-        return pos >= 0;
-    }
-
     public Collection<Cell> getSortedColumns()
     {
         return reversed ? new ReverseSortedCollection() : cells;
@@ -264,11 +239,6 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
         });
     }
 
-    public Iterator<Cell> iterator()
-    {
-        return reversed ? Lists.reverse(cells).iterator() : cells.iterator();
-    }
-
     public Iterator<Cell> iterator(ColumnSlice[] slices)
     {
         return new SlicesIterator(cells, getComparator(), slices, reversed);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java b/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
index c1c7b66..5f56326 100644
--- a/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
+++ b/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
@@ -34,7 +34,6 @@ import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.db.composites.CellName;
 import org.apache.cassandra.db.composites.CellNameType;
 import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.db.index.SecondaryIndexManager;
 import org.apache.cassandra.utils.ObjectSizes;
 import org.apache.cassandra.utils.btree.BTree;
 import org.apache.cassandra.utils.btree.BTreeSet;
@@ -93,11 +92,6 @@ public class AtomicBTreeColumns extends ColumnFamily
         this.ref = holder;
     }
 
-    public CellNameType getComparator()
-    {
-        return metadata.comparator;
-    }
-
     public Factory getFactory()
     {
         return factory;
@@ -158,11 +152,6 @@ public class AtomicBTreeColumns extends ColumnFamily
         }
     }
 
-    public void addAll(ColumnFamily cm, AbstractAllocator allocator, Function<Cell, Cell> transformation)
-    {
-        addAllWithSizeDelta(cm, allocator, transformation, SecondaryIndexManager.nullUpdater, new Delta());
-    }
-
     // the function we provide to the btree utilities to perform any column replacements
     private static final class ColumnUpdater implements UpdateFunction<Cell>
     {
@@ -282,12 +271,12 @@ public class AtomicBTreeColumns extends ColumnFamily
 
     // no particular reason not to implement these next methods, we just haven't needed them yet
 
-    public void addColumn(Cell column, AbstractAllocator allocator)
+    public void addColumn(Cell column)
     {
         throw new UnsupportedOperationException();
     }
 
-    public boolean replace(Cell oldColumn, Cell newColumn)
+    public void addAll(ColumnFamily cf)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/CollationController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CollationController.java b/src/java/org/apache/cassandra/db/CollationController.java
index 0ce2654..3fd3e8b 100644
--- a/src/java/org/apache/cassandra/db/CollationController.java
+++ b/src/java/org/apache/cassandra/db/CollationController.java
@@ -30,7 +30,6 @@ import org.apache.cassandra.db.marshal.CounterColumnType;
 import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.tracing.Tracing;
-import org.apache.cassandra.utils.memory.HeapAllocator;
 
 public class CollationController
 {
@@ -87,7 +86,7 @@ public class CollationController
                         temp.addAtom(iter.next());
                 }
 
-                container.addAll(temp, HeapAllocator.instance);
+                container.addAll(temp);
                 temp.clear();
             }
 
@@ -129,7 +128,7 @@ public class CollationController
                         temp.addAtom(iter.next());
                 }
 
-                container.addAll(temp, HeapAllocator.instance);
+                container.addAll(temp);
                 temp.clear();
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/ColumnFamily.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamily.java b/src/java/org/apache/cassandra/db/ColumnFamily.java
index 610e869..2bf91bf 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamily.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamily.java
@@ -28,12 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
 import com.google.common.collect.ImmutableMap;
-
-import org.apache.cassandra.utils.memory.AbstractAllocator;
-import org.apache.cassandra.utils.memory.HeapAllocator;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import org.apache.cassandra.cache.IRowCacheEntry;
@@ -125,11 +120,6 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
         }
     }
 
-    public void addColumn(Cell cell)
-    {
-        addColumn(cell, HeapAllocator.instance);
-    }
-
     public void addColumn(CellName name, ByteBuffer value, long timestamp)
     {
         addColumn(name, value, timestamp, 0);
@@ -210,7 +200,7 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
      * If a cell with the same name is already present in the map, it will
      * be replaced by the newly added cell.
      */
-    public abstract void addColumn(Cell cell, AbstractAllocator allocator);
+    public abstract void addColumn(Cell cell);
 
     /**
      * Adds all the columns of a given column map to this column map.
@@ -221,14 +211,7 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
      *   </code>
      *  but is potentially faster.
      */
-    public abstract void addAll(ColumnFamily cm, AbstractAllocator allocator, Function<Cell, Cell> transformation);
-
-    /**
-     * Replace oldCell if present by newCell.
-     * Returns true if oldCell was present and thus replaced.
-     * oldCell and newCell should have the same name.
-     */
-    public abstract boolean replace(Cell oldCell, Cell newCell);
+    public abstract void addAll(ColumnFamily cm);
 
     /**
      * Get a column given its name, returning null if the column is not
@@ -294,11 +277,6 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
         delete(columns.deletionInfo());
     }
 
-    public void addAll(ColumnFamily cf, AbstractAllocator allocator)
-    {
-        addAll(cf, allocator, Functions.<Cell>identity());
-    }
-
     /*
      * This function will calculate the difference between 2 column families.
      * The external input is assumed to be a superset of internal.
@@ -381,7 +359,7 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
     public String toString()
     {
         StringBuilder sb = new StringBuilder("ColumnFamily(");
-        sb.append(metadata == null ? "<anonymous>" : metadata.cfName);
+        sb.append(metadata.cfName);
 
         if (isMarkedForDelete())
             sb.append(" -").append(deletionInfo()).append("-");
@@ -413,15 +391,10 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
 
     public void resolve(ColumnFamily cf)
     {
-        resolve(cf, HeapAllocator.instance);
-    }
-
-    public void resolve(ColumnFamily cf, AbstractAllocator allocator)
-    {
         // Row _does_ allow null CF objects :(  seems a necessary evil for efficiency
         if (cf == null)
             return;
-        addAll(cf, allocator);
+        addAll(cf);
     }
 
     public ColumnStats getColumnStats()
@@ -485,21 +458,6 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
         return getReverseSortedColumns().iterator();
     }
 
-    public boolean hasIrrelevantData(int gcBefore)
-    {
-        // Do we have gcable deletion infos?
-        if (deletionInfo().hasPurgeableTombstones(gcBefore))
-            return true;
-
-        // Do we have colums that are either deleted by the container or gcable tombstone?
-        DeletionInfo.InOrderTester tester = inOrderDeletionTester();
-        for (Cell cell : this)
-            if (tester.isDeleted(cell) || cell.hasIrrelevantData(gcBefore))
-                return true;
-
-        return false;
-    }
-
     public Map<CellName, ByteBuffer> asMap()
     {
         ImmutableMap.Builder<CellName, ByteBuffer> builder = ImmutableMap.builder();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 961d126..0b3f64e 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -33,13 +33,6 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.collect.*;
 import com.google.common.util.concurrent.*;
-import org.apache.cassandra.concurrent.NamedThreadFactory;
-import org.apache.cassandra.utils.concurrent.OpOrder;
-import org.apache.cassandra.concurrent.StageManager;
-import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.db.filter.SliceQueryFilter;
-import org.apache.cassandra.utils.memory.HeapAllocator;
-
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.Striped;
 import com.google.common.util.concurrent.Uninterruptibles;
@@ -48,19 +41,22 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.cache.*;
 import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutor;
+import org.apache.cassandra.concurrent.NamedThreadFactory;
+import org.apache.cassandra.concurrent.StageManager;
 import org.apache.cassandra.config.*;
 import org.apache.cassandra.config.CFMetaData.SpeculativeRetry;
 import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 import org.apache.cassandra.db.commitlog.CommitLog;
 import org.apache.cassandra.db.commitlog.ReplayPosition;
 import org.apache.cassandra.db.compaction.*;
-import org.apache.cassandra.db.filter.ExtendedFilter;
-import org.apache.cassandra.db.filter.IDiskAtomFilter;
-import org.apache.cassandra.db.filter.QueryFilter;
 import org.apache.cassandra.db.composites.CellName;
-import org.apache.cassandra.db.composites.Composites;
 import org.apache.cassandra.db.composites.CellNameType;
 import org.apache.cassandra.db.composites.Composite;
+import org.apache.cassandra.db.filter.ColumnSlice;
+import org.apache.cassandra.db.filter.ExtendedFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
+import org.apache.cassandra.db.filter.SliceQueryFilter;
 import org.apache.cassandra.db.index.SecondaryIndex;
 import org.apache.cassandra.db.index.SecondaryIndexManager;
 import org.apache.cassandra.dht.*;
@@ -74,13 +70,12 @@ import org.apache.cassandra.io.sstable.metadata.CompactionMetadata;
 import org.apache.cassandra.io.sstable.metadata.MetadataType;
 import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.metrics.ColumnFamilyMetrics;
-import org.apache.cassandra.service.ActiveRepairService;
 import org.apache.cassandra.service.CacheService;
 import org.apache.cassandra.service.StorageService;
-
 import org.apache.cassandra.streaming.StreamLockfile;
 import org.apache.cassandra.tracing.Tracing;
 import org.apache.cassandra.utils.*;
+import org.apache.cassandra.utils.concurrent.OpOrder;
 
 import static org.apache.cassandra.config.CFMetaData.Caching;
 
@@ -2066,7 +2061,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
                     {
                         ColumnFamily cf = filter.cfs.getColumnFamily(new QueryFilter(rawRow.key, name, extraFilter, filter.timestamp));
                         if (cf != null)
-                            data.addAll(cf, HeapAllocator.instance);
+                            data.addAll(cf);
                     }
 
                     removeDroppedColumns(data);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/EmptyColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/EmptyColumns.java b/src/java/org/apache/cassandra/db/EmptyColumns.java
index 5021f39..fa6ea1b 100644
--- a/src/java/org/apache/cassandra/db/EmptyColumns.java
+++ b/src/java/org/apache/cassandra/db/EmptyColumns.java
@@ -1,4 +1,3 @@
-package org.apache.cassandra.db;
 /*
  * 
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,19 +18,17 @@ package org.apache.cassandra.db;
  * under the License.
  * 
  */
-
+package org.apache.cassandra.db;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 
+import com.google.common.collect.Iterators;
+
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.db.composites.CellName;
 import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.utils.memory.AbstractAllocator;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterators;
 
 public class EmptyColumns extends AbstractThreadUnsafeSortedColumns
 {
@@ -63,17 +60,12 @@ public class EmptyColumns extends AbstractThreadUnsafeSortedColumns
         return factory;
     }
 
-    public void addColumn(Cell cell, AbstractAllocator allocator)
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public void addAll(ColumnFamily cm, AbstractAllocator allocator, Function<Cell, Cell> transformation)
+    public void addColumn(Cell cell)
     {
         throw new UnsupportedOperationException();
     }
 
-    public boolean replace(Cell oldCell, Cell newCell)
+    public void addAll(ColumnFamily cm)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java b/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
index 09c50fa..dadb021 100644
--- a/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
+++ b/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
@@ -23,13 +23,10 @@ import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeMap;
 
-import com.google.common.base.Function;
-
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.db.composites.CellName;
-import org.apache.cassandra.db.composites.CellNameType;
 import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.utils.memory.AbstractAllocator;
+import org.apache.cassandra.utils.memory.HeapAllocator;
 
 public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
 {
@@ -44,11 +41,6 @@ public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumn
         }
     };
 
-    public CellNameType getComparator()
-    {
-        return (CellNameType)map.comparator();
-    }
-
     private TreeMapBackedSortedColumns(CFMetaData metadata)
     {
         super(metadata);
@@ -80,7 +72,7 @@ public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumn
      * If we find an old cell that has the same name
      * the ask it to resolve itself else add the new cell
     */
-    public void addColumn(Cell cell, AbstractAllocator allocator)
+    public void addColumn(Cell cell)
     {
         CellName name = cell.name();
         // this is a slightly unusual way to structure this; a more natural way is shown in ThreadSafeSortedColumns,
@@ -92,40 +84,17 @@ public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumn
             return;
 
         // calculate reconciled col from old (existing) col and new col
-        map.put(name, cell.reconcile(oldCell, allocator));
+        map.put(name, cell.reconcile(oldCell, HeapAllocator.instance));
     }
 
     /**
      * We need to go through each column in the column container and resolve it before adding
      */
-    public void addAll(ColumnFamily cm, AbstractAllocator allocator, Function<Cell, Cell> transformation)
+    public void addAll(ColumnFamily cm)
     {
         delete(cm.deletionInfo());
         for (Cell cell : cm)
-            addColumn(transformation.apply(cell), allocator);
-    }
-
-    public boolean replace(Cell oldCell, Cell newCell)
-    {
-        if (!oldCell.name().equals(newCell.name()))
-            throw new IllegalArgumentException();
-
-        // We are not supposed to put the newCell is either there was not
-        // column or the column was not equal to oldCell (to be coherent
-        // with other implementation). We optimize for the common case where
-        // oldCell do is present though.
-        Cell previous = map.put(oldCell.name(), newCell);
-        if (previous == null)
-        {
-            map.remove(oldCell.name());
-            return false;
-        }
-        if (!previous.equals(oldCell))
-        {
-            map.put(oldCell.name(), previous);
-            return false;
-        }
-        return true;
+            addColumn(cell);
     }
 
     public Cell getColumn(CellName name)
@@ -159,11 +128,6 @@ public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumn
         return map.navigableKeySet();
     }
 
-    public Iterator<Cell> iterator()
-    {
-        return map.values().iterator();
-    }
-
     public Iterator<Cell> iterator(ColumnSlice[] slices)
     {
         return new ColumnSlice.NavigableMapIterator(map, slices);
@@ -173,5 +137,4 @@ public class TreeMapBackedSortedColumns extends AbstractThreadUnsafeSortedColumn
     {
         return new ColumnSlice.NavigableMapIterator(map.descendingMap(), slices);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
index d491c93..f08ba4d 100644
--- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
@@ -24,8 +24,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.cassandra.utils.concurrent.OpOrder;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +38,7 @@ import org.apache.cassandra.db.filter.QueryFilter;
 import org.apache.cassandra.db.index.*;
 import org.apache.cassandra.dht.AbstractBounds;
 import org.apache.cassandra.dht.Range;
-import org.apache.cassandra.utils.memory.HeapAllocator;
+import org.apache.cassandra.utils.concurrent.OpOrder;
 
 public class KeysSearcher extends SecondaryIndexSearcher
 {
@@ -182,7 +180,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
                         {
                             ColumnFamily cf = baseCfs.getColumnFamily(new QueryFilter(dk, baseCfs.name, extraFilter, filter.timestamp));
                             if (cf != null)
-                                data.addAll(cf, HeapAllocator.instance);
+                                data.addAll(cf);
                         }
 
                         if (((KeysIndex)index).isIndexEntryStale(indexKey.key, data, filter.timestamp))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java b/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
index cd837c8..d98dab6 100644
--- a/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
+++ b/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
@@ -1,4 +1,3 @@
-package org.apache.cassandra.db;
 /*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,23 +18,19 @@ package org.apache.cassandra.db;
  * under the License.
  *
  */
-
+package org.apache.cassandra.db;
 
 import java.util.*;
-
 import org.junit.Test;
 
 import static org.junit.Assert.*;
 
-import com.google.common.base.Functions;
-
 import org.apache.cassandra.SchemaLoader;
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.config.Schema;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.db.composites.*;
 import org.apache.cassandra.db.filter.ColumnSlice;
-import org.apache.cassandra.utils.memory.HeapAllocator;
 import org.apache.cassandra.db.marshal.Int32Type;
 
 public class ArrayBackedSortedColumnsTest extends SchemaLoader
@@ -59,7 +54,7 @@ public class ArrayBackedSortedColumnsTest extends SchemaLoader
         int[] values = new int[]{ 1, 2, 2, 3 };
 
         for (int i = 0; i < values.length; ++i)
-            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])), HeapAllocator.instance);
+            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])));
 
         Iterator<Cell> iter = map.iterator();
         assertEquals("1st column", 1, iter.next().name().toByteBuffer().getInt(0));
@@ -84,12 +79,12 @@ public class ArrayBackedSortedColumnsTest extends SchemaLoader
         int[] values2 = new int[]{ 2, 4, 5, 6 };
 
         for (int i = 0; i < values1.length; ++i)
-            map.addColumn(new Cell(type.makeCellName(values1[reversed ? values1.length - 1 - i : i])), HeapAllocator.instance);
+            map.addColumn(new Cell(type.makeCellName(values1[reversed ? values1.length - 1 - i : i])));
 
         for (int i = 0; i < values2.length; ++i)
-            map2.addColumn(new Cell(type.makeCellName(values2[reversed ? values2.length - 1 - i : i])), HeapAllocator.instance);
+            map2.addColumn(new Cell(type.makeCellName(values2[reversed ? values2.length - 1 - i : i])));
 
-        map2.addAll(map, HeapAllocator.instance, Functions.<Cell>identity());
+        map2.addAll(map);
 
         Iterator<Cell> iter = map2.iterator();
         assertEquals("1st column", 1, iter.next().name().toByteBuffer().getInt(0));
@@ -113,14 +108,14 @@ public class ArrayBackedSortedColumnsTest extends SchemaLoader
         ColumnFamily map = ArrayBackedSortedColumns.factory.create(metadata(), reversed);
         int[] values = new int[]{ 1, 2, 3, 5, 9 };
 
-        List<Cell> sorted = new ArrayList<Cell>();
+        List<Cell> sorted = new ArrayList<>();
         for (int v : values)
             sorted.add(new Cell(type.makeCellName(v)));
-        List<Cell> reverseSorted = new ArrayList<Cell>(sorted);
+        List<Cell> reverseSorted = new ArrayList<>(sorted);
         Collections.reverse(reverseSorted);
 
         for (int i = 0; i < values.length; ++i)
-            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])), HeapAllocator.instance);
+            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])));
 
         assertSame(sorted, map.getSortedColumns());
         assertSame(reverseSorted, map.getReverseSortedColumns());
@@ -141,7 +136,7 @@ public class ArrayBackedSortedColumnsTest extends SchemaLoader
         int[] values = new int[]{ 1, 2, 3, 5, 9 };
 
         for (int i = 0; i < values.length; ++i)
-            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])), HeapAllocator.instance);
+            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])));
 
         assertSame(new int[]{ 3, 2, 1 }, map.reverseIterator(new ColumnSlice[]{ new ColumnSlice(type.make(3), Composites.EMPTY) }));
         assertSame(new int[]{ 3, 2, 1 }, map.reverseIterator(new ColumnSlice[]{ new ColumnSlice(type.make(4), Composites.EMPTY) }));
@@ -187,7 +182,7 @@ public class ArrayBackedSortedColumnsTest extends SchemaLoader
         int[] values = new int[]{ 1, 2, 2, 3 };
 
         for (int i = 0; i < values.length; ++i)
-            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])), HeapAllocator.instance);
+            map.addColumn(new Cell(type.makeCellName(values[reversed ? values.length - 1 - i : i])));
 
         Iterator<Cell> iter = map.getReverseSortedColumns().iterator();
         assertTrue(iter.hasNext());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e43885a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
index cd79217..ae2a461 100644
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
@@ -25,21 +25,18 @@ import java.nio.ByteBuffer;
 import java.util.*;
 
 import com.google.common.collect.Iterables;
-
-import org.apache.cassandra.SchemaLoader;
 import org.junit.Test;
 
+import org.apache.cassandra.SchemaLoader;
 import org.apache.cassandra.io.sstable.ColumnStats;
 import org.apache.cassandra.io.util.DataOutputBuffer;
 import org.apache.cassandra.net.MessagingService;
+import org.apache.cassandra.utils.ByteBufferUtil;
+
 import static org.apache.cassandra.Util.column;
 import static org.apache.cassandra.Util.cellname;
 import static org.junit.Assert.assertEquals;
 
-import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.cassandra.utils.memory.HeapAllocator;
-
-
 public class ColumnFamilyTest extends SchemaLoader
 {
     static int version = MessagingService.current_version;
@@ -68,7 +65,7 @@ public class ColumnFamilyTest extends SchemaLoader
     {
         ColumnFamily cf;
 
-        TreeMap<String, String> map = new TreeMap<String, String>();
+        TreeMap<String, String> map = new TreeMap<>();
         for (int i = 100; i < 1000; ++i)
         {
             map.put(Integer.toString(i), "Avinash Lakshman is a good man: " + i);
@@ -134,8 +131,8 @@ public class ColumnFamilyTest extends SchemaLoader
         cf_old.addColumn(cellname("col2"), val2, 1);
         cf_old.addColumn(cellname("col3"), val2, 2);
 
-        cf_result.addAll(cf_new, HeapAllocator.instance);
-        cf_result.addAll(cf_old, HeapAllocator.instance);
+        cf_result.addAll(cf_new);
+        cf_result.addAll(cf_old);
 
         assert 3 == cf_result.getColumnCount() : "Count is " + cf_new.getColumnCount();
         //addcolumns will only add if timestamp >= old timestamp