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/09/25 03:51:37 UTC
[6/9] git commit: Allow estimated memtable size to exceed slab
allocator size patch by jbellis; reviewed by jasobrown for CASSANDRA-6078
Allow estimated memtable size to exceed slab allocator size
patch by jbellis; reviewed by jasobrown for CASSANDRA-6078
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/16f19a7c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/16f19a7c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/16f19a7c
Branch: refs/heads/cassandra-1.2
Commit: 16f19a7cce409da4e8ab9522c29450b17879e8d9
Parents: 5464853
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Sep 24 20:46:45 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Sep 24 20:46:45 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/Memtable.java | 4 +---
src/java/org/apache/cassandra/utils/Allocator.java | 2 --
src/java/org/apache/cassandra/utils/HeapAllocator.java | 5 -----
src/java/org/apache/cassandra/utils/SlabAllocator.java | 8 --------
5 files changed, 2 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/16f19a7c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a5903fa..6341e29 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.11
+ * Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
* Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/16f19a7c/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 cbe20fe..e39ccfe 100644
--- a/src/java/org/apache/cassandra/db/Memtable.java
+++ b/src/java/org/apache/cassandra/db/Memtable.java
@@ -141,11 +141,9 @@ public class Memtable
{
long estimatedSize = (long) (currentSize.get() * cfs.liveRatio);
- // cap the estimate at both ends by what the allocator can tell us
+ // liveRatio is just an estimate; we can get a lower bound directly from the allocator
if (estimatedSize < allocator.getMinimumSize())
return allocator.getMinimumSize();
- if (estimatedSize > allocator.getMaximumSize())
- return allocator.getMaximumSize();
return estimatedSize;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/16f19a7c/src/java/org/apache/cassandra/utils/Allocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/Allocator.java b/src/java/org/apache/cassandra/utils/Allocator.java
index d11815d..7134353 100644
--- a/src/java/org/apache/cassandra/utils/Allocator.java
+++ b/src/java/org/apache/cassandra/utils/Allocator.java
@@ -38,6 +38,4 @@ public abstract class Allocator
public abstract ByteBuffer allocate(int size);
public abstract long getMinimumSize();
-
- public abstract long getMaximumSize();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/16f19a7c/src/java/org/apache/cassandra/utils/HeapAllocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/HeapAllocator.java b/src/java/org/apache/cassandra/utils/HeapAllocator.java
index efe55dd..3d19b98 100644
--- a/src/java/org/apache/cassandra/utils/HeapAllocator.java
+++ b/src/java/org/apache/cassandra/utils/HeapAllocator.java
@@ -38,9 +38,4 @@ public final class HeapAllocator extends Allocator
{
return 0;
}
-
- public long getMaximumSize()
- {
- return Long.MAX_VALUE;
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/16f19a7c/src/java/org/apache/cassandra/utils/SlabAllocator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/SlabAllocator.java b/src/java/org/apache/cassandra/utils/SlabAllocator.java
index 6ff66f8..af38cde 100644
--- a/src/java/org/apache/cassandra/utils/SlabAllocator.java
+++ b/src/java/org/apache/cassandra/utils/SlabAllocator.java
@@ -117,14 +117,6 @@ public class SlabAllocator extends Allocator
}
/**
- * @return an upper bound on how much space has been allocated
- */
- public long getMaximumSize()
- {
- return unslabbed.get() + regionCount * (long)REGION_SIZE;
- }
-
- /**
* A region of memory out of which allocations are sliced.
*
* This serves two purposes: