From 4314db6c8ac2ae75402248e1cb99c5ece7d057df Mon Sep 17 00:00:00 2001 From: leventov Date: Tue, 30 Dec 2014 05:05:50 +0700 Subject: [PATCH] HCOLL-244 Fixed entrySize computation in ReplicatedChronicleMap --- .../chronicle/map/ReplicatedChronicleMap.java | 15 ++------------- .../chronicle/map/VanillaChronicleMap.java | 12 ++++++++---- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java index 86756d749..375ba2699 100644 --- a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java @@ -683,19 +683,8 @@ final class ReplicatedChronicleMap Integer.MAX_VALUE) - throw new IllegalStateException("ENTRY WRITE_BUFFER_SIZE TOO LARGE : Replicated " + - "ChronicleMap's" + - " are restricted to an " + - "entry size of " + Integer.MAX_VALUE + ", " + - "your entry size=" + result); - - return result; + long sizeOfEverythingBeforeValue(long keySize, long valueSize) { + return super.sizeOfEverythingBeforeValue(keySize, valueSize) + ADDITIONAL_ENTRY_BYTES; } @Override diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 3aae579d0..667b8b0e1 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -1614,10 +1614,8 @@ class VanillaChronicleMap, return entry; } - long entrySize(long keySize, long valueSize) { - long sizeOfEverythingBeforeValue = metaDataBytes + - keySizeMarshaller.sizeEncodingSize(keySize) + keySize + - valueSizeMarshaller.sizeEncodingSize(valueSize); + final long entrySize(long keySize, long valueSize) { + long sizeOfEverythingBeforeValue = sizeOfEverythingBeforeValue(keySize, valueSize); if (constantlySizedEntry) { return alignment.alignAddr(sizeOfEverythingBeforeValue + valueSize); } else if (couldNotDetermineAlignmentBeforeAllocation) { @@ -1627,6 +1625,12 @@ class VanillaChronicleMap, } } + long sizeOfEverythingBeforeValue(long keySize, long valueSize) { + return metaDataBytes + + keySizeMarshaller.sizeEncodingSize(keySize) + keySize + + valueSizeMarshaller.sizeEncodingSize(valueSize); + } + final int inChunks(long sizeInBytes) { if (sizeInBytes <= chunkSize) return 1;