From dd4fa03bfefdf9fa02e2fdc51c1034059dd6a6ac Mon Sep 17 00:00:00 2001 From: leventov Date: Sun, 20 Dec 2015 18:32:53 +0300 Subject: [PATCH] Fix wrong decrements of tierDeleted (after innerDefaultReplaceValue(), when should be before), because relocation could trigger tier change inside innerDefaultReplaceValue() --- .../map/impl/stage/iter/ReplicatedMapSegmentIteration.java | 2 +- .../chronicle/map/impl/stage/query/ReplicatedMapAbsent.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/impl/stage/iter/ReplicatedMapSegmentIteration.java b/src/main/java/net/openhft/chronicle/map/impl/stage/iter/ReplicatedMapSegmentIteration.java index 465f4a1c0..8e0e16eec 100644 --- a/src/main/java/net/openhft/chronicle/map/impl/stage/iter/ReplicatedMapSegmentIteration.java +++ b/src/main/java/net/openhft/chronicle/map/impl/stage/iter/ReplicatedMapSegmentIteration.java @@ -134,8 +134,8 @@ public abstract class ReplicatedMapSegmentIteration extends MapSegmentI checkOnEachPublicOperation.checkOnEachPublicOperation(); if (e.entryDeleted()) { try { - e.innerDefaultReplaceValue(value); s.tierDeleted(s.tierDeleted() - 1); + e.innerDefaultReplaceValue(value); s.incrementModCount(); e.writeEntryPresent(); ru.updateChange(); diff --git a/src/main/java/net/openhft/chronicle/map/impl/stage/query/ReplicatedMapAbsent.java b/src/main/java/net/openhft/chronicle/map/impl/stage/query/ReplicatedMapAbsent.java index 86c77933e..2f86e0b22 100644 --- a/src/main/java/net/openhft/chronicle/map/impl/stage/query/ReplicatedMapAbsent.java +++ b/src/main/java/net/openhft/chronicle/map/impl/stage/query/ReplicatedMapAbsent.java @@ -52,9 +52,9 @@ public abstract class ReplicatedMapAbsent extends MapAbsent { ks.setSearchState(PRESENT); q.initPresenceOfEntry(EntryPresence.PRESENT); } else { + s.tierDeleted(s.tierDeleted() - 1); e.innerDefaultReplaceValue(value); e.updatedReplicationStateOnPresentEntry(); - s.tierDeleted(s.tierDeleted() - 1); } s.incrementModCount(); e.writeEntryPresent();