From 167a15f98580a4ec3b9fb7efe50e5f89cb14d39f Mon Sep 17 00:00:00 2001 From: leventov Date: Sat, 10 Dec 2016 23:18:57 -0600 Subject: [PATCH] Cache VanillaChronicleMap.identityString lazily (after initOwnTransients()) because file() is not set by the time initOwnTransients() is called --- .../net/openhft/chronicle/map/VanillaChronicleMap.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index f80cd15a1..18628118c 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -69,6 +69,11 @@ public class VanillaChronicleMap ///////////////////////////////////////////////// private transient String name; + /** + * identityString is initialized lazily in {@link #toIdentityString()} rather than in + * {@link #initOwnTransients()} because it depends on {@link #file()} which is set after + * initOwnTransients(). + */ private transient String identityString; public transient boolean couldNotDetermineAlignmentBeforeAllocation; @@ -164,7 +169,6 @@ public class VanillaChronicleMap } private void initOwnTransients() { - identityString = makeIdentityString(); couldNotDetermineAlignmentBeforeAllocation = greatestCommonDivisor((int) chunkSize, alignment) != alignment; cxt = new ThreadLocal<>(); @@ -255,6 +259,8 @@ public class VanillaChronicleMap @Override public String toIdentityString() { + if (identityString == null) + identityString = makeIdentityString(); return identityString; }