You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2014/06/23 17:55:07 UTC
[2/3] git commit: Fix heap size calculation for
CompoundSparseCellName/.WithCollection
Fix heap size calculation for CompoundSparseCellName/.WithCollection
patch by Benedict Elliott Smith; reviewed by Dave Brosius CASSANDRA-7421
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d4833593
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d4833593
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d4833593
Branch: refs/heads/trunk
Commit: d4833593bed5db45fe718e37b685537b5a4ace9e
Parents: a175f70
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Jun 23 16:52:50 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Jun 23 16:52:50 2014 +0100
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../apache/cassandra/cql3/ColumnIdentifier.java | 2 +-
.../apache/cassandra/db/AtomicBTreeColumns.java | 4 ++--
.../org/apache/cassandra/db/BufferCell.java | 4 ++--
src/java/org/apache/cassandra/db/Cell.java | 2 +-
.../org/apache/cassandra/db/NativeCell.java | 2 +-
.../apache/cassandra/db/NativeCounterCell.java | 2 +-
.../apache/cassandra/db/NativeDeletedCell.java | 2 +-
.../apache/cassandra/db/NativeExpiringCell.java | 2 +-
.../org/apache/cassandra/db/RowIndexEntry.java | 2 +-
.../cassandra/db/composites/CellName.java | 2 +-
.../db/composites/CompoundComposite.java | 8 +++----
.../db/composites/CompoundDenseCellName.java | 2 +-
.../db/composites/CompoundSparseCellName.java | 22 ++++++++++++++++----
.../db/composites/SimpleDenseCellName.java | 2 +-
.../db/composites/SimpleSparseCellName.java | 4 ++--
.../SimpleSparseInternedCellName.java | 2 +-
.../cassandra/io/sstable/IndexHelper.java | 2 +-
18 files changed, 42 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4f68cf7..04b148c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
2.1.0-rc2
+ * Fix heap size calculation for CompoundSparseCellName and
+ CompoundSparseCellName.WithCollection (CASSANDRA-7421)
* Allow counter mutations in UNLOGGED batches (CASSANDRA-7351)
* Modify reconcile logic to always pick a tombstone over a counter cell
(CASSANDRA-7346)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/cql3/ColumnIdentifier.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/ColumnIdentifier.java b/src/java/org/apache/cassandra/cql3/ColumnIdentifier.java
index 1b232cf..fa151d2 100644
--- a/src/java/org/apache/cassandra/cql3/ColumnIdentifier.java
+++ b/src/java/org/apache/cassandra/cql3/ColumnIdentifier.java
@@ -89,7 +89,7 @@ public class ColumnIdentifier implements Selectable, IMeasurableMemory
+ ObjectSizes.sizeOf(text);
}
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return EMPTY_SIZE
+ ObjectSizes.sizeOnHeapExcludingData(bytes)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/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 0e38784..03cd0c5 100644
--- a/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
+++ b/src/java/org/apache/cassandra/db/AtomicBTreeColumns.java
@@ -344,7 +344,7 @@ public class AtomicBTreeColumns extends ColumnFamily
indexer.insert(insert);
insert = insert.localCopy(metadata, allocator, writeOp);
this.dataSize += insert.cellDataSize();
- this.heapSize += insert.excessHeapSizeExcludingData();
+ this.heapSize += insert.unsharedHeapSizeExcludingData();
if (inserted == null)
inserted = new ArrayList<>();
inserted.add(insert);
@@ -359,7 +359,7 @@ public class AtomicBTreeColumns extends ColumnFamily
{
reconciled = reconciled.localCopy(metadata, allocator, writeOp);
dataSize += reconciled.cellDataSize() - existing.cellDataSize();
- heapSize += reconciled.excessHeapSizeExcludingData() - existing.excessHeapSizeExcludingData();
+ heapSize += reconciled.unsharedHeapSizeExcludingData() - existing.unsharedHeapSizeExcludingData();
if (inserted == null)
inserted = new ArrayList<>();
inserted.add(reconciled);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/BufferCell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BufferCell.java b/src/java/org/apache/cassandra/db/BufferCell.java
index 93251c8..a7d632d 100644
--- a/src/java/org/apache/cassandra/db/BufferCell.java
+++ b/src/java/org/apache/cassandra/db/BufferCell.java
@@ -84,9 +84,9 @@ public class BufferCell extends AbstractCell
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
- return EMPTY_SIZE + name.excessHeapSizeExcludingData() + ObjectSizes.sizeOnHeapExcludingData(value);
+ return EMPTY_SIZE + name.unsharedHeapSizeExcludingData() + ObjectSizes.sizeOnHeapExcludingData(value);
}
@Override
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/Cell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Cell.java b/src/java/org/apache/cassandra/db/Cell.java
index f91376d..7c3926a 100644
--- a/src/java/org/apache/cassandra/db/Cell.java
+++ b/src/java/org/apache/cassandra/db/Cell.java
@@ -51,7 +51,7 @@ public interface Cell extends OnDiskAtom
// returns the size of the Cell and all references on the heap, excluding any costs associated with byte arrays
// that would be allocated by a localCopy, as these will be accounted for by the allocator
- public long excessHeapSizeExcludingData();
+ public long unsharedHeapSizeExcludingData();
public int serializedSize(CellNameType type, TypeSizes typeSizes);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/NativeCell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/NativeCell.java b/src/java/org/apache/cassandra/db/NativeCell.java
index 1c8ebd9..dac5674 100644
--- a/src/java/org/apache/cassandra/db/NativeCell.java
+++ b/src/java/org/apache/cassandra/db/NativeCell.java
@@ -75,7 +75,7 @@ public class NativeCell extends AbstractNativeCell
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return SIZE;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/NativeCounterCell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/NativeCounterCell.java b/src/java/org/apache/cassandra/db/NativeCounterCell.java
index d0df17e..3fe73ce 100644
--- a/src/java/org/apache/cassandra/db/NativeCounterCell.java
+++ b/src/java/org/apache/cassandra/db/NativeCounterCell.java
@@ -167,7 +167,7 @@ public class NativeCounterCell extends NativeCell implements CounterCell
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return SIZE;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/NativeDeletedCell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/NativeDeletedCell.java b/src/java/org/apache/cassandra/db/NativeDeletedCell.java
index 20118a4..e900635 100644
--- a/src/java/org/apache/cassandra/db/NativeDeletedCell.java
+++ b/src/java/org/apache/cassandra/db/NativeDeletedCell.java
@@ -112,7 +112,7 @@ public class NativeDeletedCell extends NativeCell implements DeletedCell
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return SIZE;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/NativeExpiringCell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/NativeExpiringCell.java b/src/java/org/apache/cassandra/db/NativeExpiringCell.java
index fcadb16..f265511 100644
--- a/src/java/org/apache/cassandra/db/NativeExpiringCell.java
+++ b/src/java/org/apache/cassandra/db/NativeExpiringCell.java
@@ -160,7 +160,7 @@ public class NativeExpiringCell extends NativeCell implements ExpiringCell
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return SIZE;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/RowIndexEntry.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RowIndexEntry.java b/src/java/org/apache/cassandra/db/RowIndexEntry.java
index 618cd61..05c563c 100644
--- a/src/java/org/apache/cassandra/db/RowIndexEntry.java
+++ b/src/java/org/apache/cassandra/db/RowIndexEntry.java
@@ -207,7 +207,7 @@ public class RowIndexEntry implements IMeasurableMemory
{
long entrySize = 0;
for (IndexHelper.IndexInfo idx : columnsIndex)
- entrySize += idx.excessHeapSize();
+ entrySize += idx.unsharedHeapSize();
return BASE_SIZE
+ entrySize
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/CellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/CellName.java b/src/java/org/apache/cassandra/db/composites/CellName.java
index 22b3fbd..4d778d3 100644
--- a/src/java/org/apache/cassandra/db/composites/CellName.java
+++ b/src/java/org/apache/cassandra/db/composites/CellName.java
@@ -74,5 +74,5 @@ public interface CellName extends Composite
@Override
public CellName copy(CFMetaData cfm, AbstractAllocator allocator);
- public long excessHeapSizeExcludingData();
+ public long unsharedHeapSizeExcludingData();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/CompoundComposite.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/CompoundComposite.java b/src/java/org/apache/cassandra/db/composites/CompoundComposite.java
index e16b48a..7a21b01 100644
--- a/src/java/org/apache/cassandra/db/composites/CompoundComposite.java
+++ b/src/java/org/apache/cassandra/db/composites/CompoundComposite.java
@@ -28,7 +28,7 @@ import org.apache.cassandra.utils.memory.AbstractAllocator;
*/
public class CompoundComposite extends AbstractComposite
{
- private static final long EMPTY_SIZE = ObjectSizes.measure(new CompoundComposite(null, 0, false));
+ private static final long HEAP_SIZE = ObjectSizes.measure(new CompoundComposite(null, 0, false));
// We could use a List, but we'll create such object *a lot* and using a array+size is not
// all that harder, so we save the List object allocation.
@@ -73,12 +73,12 @@ public class CompoundComposite extends AbstractComposite
public long unsharedHeapSize()
{
- return EMPTY_SIZE + ObjectSizes.sizeOnHeapOf(elements);
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapOf(elements);
}
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
- return EMPTY_SIZE + ObjectSizes.sizeOnHeapExcludingData(elements);
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapExcludingData(elements);
}
public Composite copy(CFMetaData cfm, AbstractAllocator allocator)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/CompoundDenseCellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/CompoundDenseCellName.java b/src/java/org/apache/cassandra/db/composites/CompoundDenseCellName.java
index 0a157c2..1f471a8 100644
--- a/src/java/org/apache/cassandra/db/composites/CompoundDenseCellName.java
+++ b/src/java/org/apache/cassandra/db/composites/CompoundDenseCellName.java
@@ -73,7 +73,7 @@ public class CompoundDenseCellName extends CompoundComposite implements CellName
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return HEAP_SIZE + ObjectSizes.sizeOnHeapExcludingData(elements);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/CompoundSparseCellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/CompoundSparseCellName.java b/src/java/org/apache/cassandra/db/composites/CompoundSparseCellName.java
index ad7bb73..03af6d0 100644
--- a/src/java/org/apache/cassandra/db/composites/CompoundSparseCellName.java
+++ b/src/java/org/apache/cassandra/db/composites/CompoundSparseCellName.java
@@ -50,6 +50,18 @@ public class CompoundSparseCellName extends CompoundComposite implements CellNam
this.columnName = columnName;
}
+ @Override
+ public long unsharedHeapSize()
+ {
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapOf(elements);
+ }
+
+ @Override
+ public long unsharedHeapSizeExcludingData()
+ {
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapExcludingData(elements);
+ }
+
public int size()
{
return size + 1;
@@ -156,13 +168,15 @@ public class CompoundSparseCellName extends CompoundComposite implements CellNam
@Override
public long unsharedHeapSize()
{
- return super.unsharedHeapSize() + ObjectSizes.sizeOnHeapOf(collectionElement);
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapOf(elements)
+ + ObjectSizes.sizeOnHeapExcludingData(collectionElement);
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
- return super.excessHeapSizeExcludingData() + ObjectSizes.sizeOnHeapExcludingData(collectionElement);
+ return HEAP_SIZE + ObjectSizes.sizeOnHeapExcludingData(elements)
+ + ObjectSizes.sizeOnHeapExcludingData(collectionElement);
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/SimpleDenseCellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/SimpleDenseCellName.java b/src/java/org/apache/cassandra/db/composites/SimpleDenseCellName.java
index 5c0f976..2ca7d23 100644
--- a/src/java/org/apache/cassandra/db/composites/SimpleDenseCellName.java
+++ b/src/java/org/apache/cassandra/db/composites/SimpleDenseCellName.java
@@ -67,7 +67,7 @@ public class SimpleDenseCellName extends SimpleComposite implements CellName
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return EMPTY_SIZE + ObjectSizes.sizeOnHeapExcludingData(element);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/SimpleSparseCellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/SimpleSparseCellName.java b/src/java/org/apache/cassandra/db/composites/SimpleSparseCellName.java
index a7fafba..c6351f1 100644
--- a/src/java/org/apache/cassandra/db/composites/SimpleSparseCellName.java
+++ b/src/java/org/apache/cassandra/db/composites/SimpleSparseCellName.java
@@ -87,9 +87,9 @@ public class SimpleSparseCellName extends AbstractComposite implements CellName
return true;
}
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
- return EMPTY_SIZE + columnName.excessHeapSizeExcludingData();
+ return EMPTY_SIZE + columnName.unsharedHeapSizeExcludingData();
}
public long unsharedHeapSize()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/db/composites/SimpleSparseInternedCellName.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/composites/SimpleSparseInternedCellName.java b/src/java/org/apache/cassandra/db/composites/SimpleSparseInternedCellName.java
index c5708d8..c613720 100644
--- a/src/java/org/apache/cassandra/db/composites/SimpleSparseInternedCellName.java
+++ b/src/java/org/apache/cassandra/db/composites/SimpleSparseInternedCellName.java
@@ -31,7 +31,7 @@ public class SimpleSparseInternedCellName extends SimpleSparseCellName
}
@Override
- public long excessHeapSizeExcludingData()
+ public long unsharedHeapSizeExcludingData()
{
return 0;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d4833593/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexHelper.java b/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
index 72a708b..7099a15 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
@@ -205,7 +205,7 @@ public class IndexHelper
}
}
- public long excessHeapSize()
+ public long unsharedHeapSize()
{
return EMPTY_SIZE + firstName.unsharedHeapSize() + lastName.unsharedHeapSize();
}