From 268ba7f5692c6cf2bb8c2b477eb52fad9f649c0c Mon Sep 17 00:00:00 2001 From: leventov Date: Thu, 17 Dec 2015 21:25:47 +0300 Subject: [PATCH] Reorder fields in replication message, to avoid writing value size, when deleted event is sent --- .../chronicle/map/ReplicatedChronicleMap.java | 35 ++++++++----------- .../map/impl/stage/input/ReplicatedInput.java | 17 ++++----- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java index bda0e3fa4..9dfb27848 100644 --- a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java @@ -372,34 +372,25 @@ public class ReplicatedChronicleMap extends VanillaChronicleMap extends VanillaChronicleMap @StageRef ReplicatedChronicleMapHolder mh; @StageRef ReplicationUpdate ru; - @StageRef LogHolder lh; @StageRef ReplicatedInputKeyBytesData replicatedInputKeyBytesValue; @StageRef ReplicatedInputValueBytesData replicatedInputValueBytesValue; - @StageRef KeySearch ks; @StageRef ReplicatedMapQuery q; @StageRef SegmentStages s; - @StageRef ReplicatedMapEntryStages e; @StageRef DummyValueZeroData dummyValue; @Override @@ -77,17 +71,18 @@ public abstract class ReplicatedInput public void initReplicationInput(Bytes replicatedInputBytes) { initReplicatedInputBytes(replicatedInputBytes); bootstrapTimestamp = replicatedInputBytes.readLong(); - riKeySize = mh.m().keySizeMarshaller.readSize(replicatedInputBytes); - riValueSize = mh.m().valueSizeMarshaller.readSize(replicatedInputBytes); - riTimestamp = replicatedInputBytes.readStopBit(); riId = replicatedInputBytes.readByte(); ru.initReplicationUpdate(riTimestamp, riId); isDeleted = replicatedInputBytes.readBoolean(); - + riKeySize = mh.m().keySizeMarshaller.readSize(replicatedInputBytes); riKeyOffset = replicatedInputBytes.readPosition(); - riValueOffset = riKeyOffset + riKeySize; + if (!isDeleted) { + replicatedInputBytes.readSkip(riKeySize); + riValueSize = mh.m().valueSizeMarshaller.readSize(replicatedInputBytes); + riValueOffset = replicatedInputBytes.readPosition(); + } } public void processReplicatedEvent() {