You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2016/11/30 13:34:47 UTC

[03/10] cassandra git commit: Reenable HeapPool

Reenable HeapPool

Patch by marcuse; reviewed by Branimir Lambov for CASSANDRA-12900


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

Branch: refs/heads/cassandra-3.X
Commit: 8cb9693a6b334498ca7edd42e4a934c11b581f2c
Parents: d70b336
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Nov 15 15:03:51 2016 +0100
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Wed Nov 30 14:24:43 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 src/java/org/apache/cassandra/db/Memtable.java  |  4 -
 .../db/partitions/AtomicBTreePartition.java     | 19 -----
 .../apache/cassandra/utils/memory/HeapPool.java | 77 ++++----------------
 .../utils/memory/MemtableAllocator.java         | 36 ---------
 .../cassandra/utils/memory/NativeAllocator.java |  6 --
 .../cassandra/utils/memory/SlabAllocator.java   |  5 --
 7 files changed, 15 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 32bd821..58a29e7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,7 @@
  * LocalToken ensures token values are cloned on heap (CASSANDRA-12651)
  * AnticompactionRequestSerializer serializedSize is incorrect (CASSANDRA-12934)
  * Prevent reloading of logback.xml from UDF sandbox (CASSANDRA-12535)
+ * Reenable HeapPool (CASSANDRA-12900)
 Merged from 2.2:
  * cqlsh: fix DESC TYPES errors (CASSANDRA-12914)
  * Fix leak on skipped SSTables in sstableupgrade (CASSANDRA-12899)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/db/Memtable.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Memtable.java b/src/java/org/apache/cassandra/db/Memtable.java
index 3c77092..1a7d6cb 100644
--- a/src/java/org/apache/cassandra/db/Memtable.java
+++ b/src/java/org/apache/cassandra/db/Memtable.java
@@ -249,10 +249,6 @@ public class Memtable implements Comparable<Memtable>
                 allocator.onHeap().allocate(overhead, opGroup);
                 initialSize = 8;
             }
-            else
-            {
-                allocator.reclaimer().reclaimImmediately(cloneKey);
-            }
         }
 
         long[] pair = previous.addAllWithSizeDelta(update, opGroup, indexer);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/db/partitions/AtomicBTreePartition.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/partitions/AtomicBTreePartition.java b/src/java/org/apache/cassandra/db/partitions/AtomicBTreePartition.java
index 2be882e..7f2de82 100644
--- a/src/java/org/apache/cassandra/db/partitions/AtomicBTreePartition.java
+++ b/src/java/org/apache/cassandra/db/partitions/AtomicBTreePartition.java
@@ -244,7 +244,6 @@ public class AtomicBTreePartition extends AbstractBTreePartition
         long dataSize;
         long heapSize;
         long colUpdateTimeDelta = Long.MAX_VALUE;
-        final MemtableAllocator.DataReclaimer reclaimer;
         List<Row> inserted; // TODO: replace with walk of aborted BTree
 
         private RowUpdater(AtomicBTreePartition updating, MemtableAllocator allocator, OpOrder.Group writeOp, UpdateTransaction indexer)
@@ -254,7 +253,6 @@ public class AtomicBTreePartition extends AbstractBTreePartition
             this.writeOp = writeOp;
             this.indexer = indexer;
             this.nowInSec = FBUtilities.nowInSeconds();
-            this.reclaimer = allocator.reclaimer();
         }
 
         private Row.Builder builder(Clustering clustering)
@@ -296,7 +294,6 @@ public class AtomicBTreePartition extends AbstractBTreePartition
             if (inserted == null)
                 inserted = new ArrayList<>();
             inserted.add(reconciled);
-            discard(existing);
 
             return reconciled;
         }
@@ -306,22 +303,7 @@ public class AtomicBTreePartition extends AbstractBTreePartition
             this.dataSize = 0;
             this.heapSize = 0;
             if (inserted != null)
-            {
-                for (Row row : inserted)
-                    abort(row);
                 inserted.clear();
-            }
-            reclaimer.cancel();
-        }
-
-        protected void abort(Row abort)
-        {
-            reclaimer.reclaimImmediately(abort);
-        }
-
-        protected void discard(Row discard)
-        {
-            reclaimer.reclaim(discard);
         }
 
         public boolean abortEarly()
@@ -337,7 +319,6 @@ public class AtomicBTreePartition extends AbstractBTreePartition
         protected void finish()
         {
             allocator.onHeap().adjust(heapSize, writeOp);
-            reclaimer.commit();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/utils/memory/HeapPool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/memory/HeapPool.java b/src/java/org/apache/cassandra/utils/memory/HeapPool.java
index 19f81be..57242c4 100644
--- a/src/java/org/apache/cassandra/utils/memory/HeapPool.java
+++ b/src/java/org/apache/cassandra/utils/memory/HeapPool.java
@@ -19,10 +19,7 @@
 package org.apache.cassandra.utils.memory;
 
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
 
-import org.apache.cassandra.db.DecoratedKey;
 import org.apache.cassandra.utils.concurrent.OpOrder;
 
 public class HeapPool extends MemtablePool
@@ -39,66 +36,20 @@ public class HeapPool extends MemtablePool
 
     public MemtableAllocator newAllocator()
     {
-        // TODO
-        throw new UnsupportedOperationException();
-        //return new Allocator(this);
+        return new Allocator(this);
     }
 
-    // TODO
-    //public static class Allocator extends MemtableBufferAllocator
-    //{
-    //    Allocator(HeapPool pool)
-    //    {
-    //        super(pool.onHeap.newAllocator(), pool.offHeap.newAllocator());
-    //    }
-
-    //    public ByteBuffer allocate(int size, OpOrder.Group opGroup)
-    //    {
-    //        super.onHeap().allocate(size, opGroup);
-    //        return ByteBuffer.allocate(size);
-    //    }
-
-    //    public DataReclaimer reclaimer()
-    //    {
-    //        return new Reclaimer();
-    //    }
-
-    //    private class Reclaimer implements DataReclaimer
-    //    {
-    //        List<Cell> delayed;
-
-    //        public Reclaimer reclaim(Cell cell)
-    //        {
-    //            if (delayed == null)
-    //                delayed = new ArrayList<>();
-    //            delayed.add(cell);
-    //            return this;
-    //        }
-
-    //        public Reclaimer reclaimImmediately(Cell cell)
-    //        {
-    //            onHeap().release(cell.name().dataSize() + cell.value().remaining());
-    //            return this;
-    //        }
-
-    //        public Reclaimer reclaimImmediately(DecoratedKey key)
-    //        {
-    //            onHeap().release(key.getKey().remaining());
-    //            return this;
-    //        }
-
-    //        public void cancel()
-    //        {
-    //            if (delayed != null)
-    //                delayed.clear();
-    //        }
-
-    //        public void commit()
-    //        {
-    //            if (delayed != null)
-    //                for (Cell cell : delayed)
-    //                    reclaimImmediately(cell);
-    //        }
-    //    }
-    //}
+    private static class Allocator extends MemtableBufferAllocator
+    {
+        Allocator(HeapPool pool)
+        {
+            super(pool.onHeap.newAllocator(), pool.offHeap.newAllocator());
+        }
+
+        public ByteBuffer allocate(int size, OpOrder.Group opGroup)
+        {
+            super.onHeap().allocate(size, opGroup);
+            return ByteBuffer.allocate(size);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/utils/memory/MemtableAllocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/memory/MemtableAllocator.java b/src/java/org/apache/cassandra/utils/memory/MemtableAllocator.java
index 5a64c3c..fa547ce 100644
--- a/src/java/org/apache/cassandra/utils/memory/MemtableAllocator.java
+++ b/src/java/org/apache/cassandra/utils/memory/MemtableAllocator.java
@@ -61,7 +61,6 @@ public abstract class MemtableAllocator
 
     public abstract Row.Builder rowBuilder(OpOrder.Group opGroup);
     public abstract DecoratedKey clone(DecoratedKey key, OpOrder.Group opGroup);
-    public abstract DataReclaimer reclaimer();
 
     public SubAllocator onHeap()
     {
@@ -102,41 +101,6 @@ public abstract class MemtableAllocator
         return state == LifeCycle.LIVE;
     }
 
-    public static interface DataReclaimer
-    {
-        public DataReclaimer reclaim(Row row);
-        public DataReclaimer reclaimImmediately(Row row);
-        public DataReclaimer reclaimImmediately(DecoratedKey key);
-        public void cancel();
-        public void commit();
-    }
-
-    public static final DataReclaimer NO_OP = new DataReclaimer()
-    {
-        public DataReclaimer reclaim(Row update)
-        {
-            return this;
-        }
-
-        public DataReclaimer reclaimImmediately(Row update)
-        {
-            return this;
-        }
-
-        public DataReclaimer reclaimImmediately(DecoratedKey key)
-        {
-            return this;
-        }
-
-        @Override
-        public void cancel()
-        {}
-
-        @Override
-        public void commit()
-        {}
-    };
-
     /** Mark the BB as unused, permitting it to be reclaimed */
     public static final class SubAllocator
     {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/utils/memory/NativeAllocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/memory/NativeAllocator.java b/src/java/org/apache/cassandra/utils/memory/NativeAllocator.java
index 4857f34..67f2a36 100644
--- a/src/java/org/apache/cassandra/utils/memory/NativeAllocator.java
+++ b/src/java/org/apache/cassandra/utils/memory/NativeAllocator.java
@@ -74,12 +74,6 @@ public class NativeAllocator extends MemtableAllocator
         return new NativeDecoratedKey(key.getToken(), this, writeOp, key.getKey());
     }
 
-    @Override
-    public MemtableAllocator.DataReclaimer reclaimer()
-    {
-        return NO_OP;
-    }
-
     public long allocate(int size, OpOrder.Group opGroup)
     {
         assert size >= 0;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8cb9693a/src/java/org/apache/cassandra/utils/memory/SlabAllocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/memory/SlabAllocator.java b/src/java/org/apache/cassandra/utils/memory/SlabAllocator.java
index 8ffead1..e797575 100644
--- a/src/java/org/apache/cassandra/utils/memory/SlabAllocator.java
+++ b/src/java/org/apache/cassandra/utils/memory/SlabAllocator.java
@@ -106,11 +106,6 @@ public class SlabAllocator extends MemtableBufferAllocator
         }
     }
 
-    public DataReclaimer reclaimer()
-    {
-        return NO_OP;
-    }
-
     public void setDiscarded()
     {
         for (Region region : offHeapRegions)