From 3b22bb5547c54d0246fd0f1e01ae2f3a746bdcc0 Mon Sep 17 00:00:00 2001 From: leventov Date: Sat, 1 Oct 2016 22:09:54 +0300 Subject: [PATCH] Ensure safe publication of ChronicleMaps, created in ChronicleMapBuilder --- .../java/net/openhft/chronicle/map/ChronicleMapBuilder.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java index 1bd792d18..749c316bc 100755 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java @@ -1501,6 +1501,8 @@ public final class ChronicleMapBuilder implements } finally { if (result != null) { result.registerRafReleaser(); + // Ensure safe publication of a ChronicleMap + OS.memory().storeFence(); } else { CanonicalRandomAccessFiles.release(file); } @@ -1664,6 +1666,8 @@ public final class ChronicleMapBuilder implements lazyNativeBytesStoreWithFixedCapacity(map.sizeInBytesWithoutTiers()); map.createMappedStoreAndSegments(bytesStore); establishReplication(map); + // Ensure "safe publication" of a ChronicleMap + OS.memory().storeFence(); return map; } catch (IOException e) { // file-less version should never trigger an IOException.