diff --git a/src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResourceReleaser.java b/src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResources.java similarity index 92% rename from src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResourceReleaser.java rename to src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResources.java index 8519fc29c..b89cbd713 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResourceReleaser.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/ChronicleHashResources.java @@ -22,7 +22,10 @@ import net.openhft.chronicle.hash.impl.util.Throwables; import java.util.ArrayList; import java.util.List; -public abstract class ChronicleHashResourceReleaser implements Runnable { +/** + * ChronicleHashResources is Runnable to be passed as "hunk" to {@link sun.misc.Cleaner}. + */ +public abstract class ChronicleHashResources implements Runnable { List memoryResources = new ArrayList<>(1); diff --git a/src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResourceReleaser.java b/src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResources.java similarity index 93% rename from src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResourceReleaser.java rename to src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResources.java index c0c42954e..886de64e1 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResourceReleaser.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/InMemoryChronicleHashResources.java @@ -21,12 +21,12 @@ import net.openhft.chronicle.core.OS; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public final class InMemoryChronicleHashResourceReleaser extends ChronicleHashResourceReleaser { +public final class InMemoryChronicleHashResources extends ChronicleHashResources { private static final Logger LOG = - LoggerFactory.getLogger(PersistedChronicleHashResourceReleaser.class); + LoggerFactory.getLogger(PersistedChronicleHashResources.class); - public InMemoryChronicleHashResourceReleaser() {} + public InMemoryChronicleHashResources() {} @Override public synchronized void run() { diff --git a/src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResourceReleaser.java b/src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResources.java similarity index 93% rename from src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResourceReleaser.java rename to src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResources.java index f4faaf467..7a5bb99f2 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResourceReleaser.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/PersistedChronicleHashResources.java @@ -25,14 +25,13 @@ import org.slf4j.LoggerFactory; import java.io.File; -public final class PersistedChronicleHashResourceReleaser - extends ChronicleHashResourceReleaser { +public final class PersistedChronicleHashResources extends ChronicleHashResources { private static final Logger LOG = - LoggerFactory.getLogger(PersistedChronicleHashResourceReleaser.class); + LoggerFactory.getLogger(PersistedChronicleHashResources.class); private final File file; - public PersistedChronicleHashResourceReleaser(File file) { + public PersistedChronicleHashResources(File file) { this.file = file; } diff --git a/src/main/java/net/openhft/chronicle/hash/impl/VanillaChronicleHash.java b/src/main/java/net/openhft/chronicle/hash/impl/VanillaChronicleHash.java index 8b7772ccf..cfeb67209 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/VanillaChronicleHash.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/VanillaChronicleHash.java @@ -129,7 +129,7 @@ public abstract class VanillaChronicleHash GIGABYTES.toBytes(1)) { @@ -688,8 +688,8 @@ public abstract class VanillaChronicleHash(address, capacity, null, false); } diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java index 8d50a19b1..2f158563b 100755 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java @@ -1508,13 +1508,11 @@ public final class ChronicleMapBuilder implements file.createNewFile(); } RandomAccessFile raf = CanonicalRandomAccessFiles.acquire(file); - ChronicleHashResourceReleaser resourceReleaser = - new PersistedChronicleHashResourceReleaser(file); + ChronicleHashResources resources = new PersistedChronicleHashResources(file); try { VanillaChronicleMap result; if (raf.length() > 0) { - result = openWithExistingFile(file, raf, resourceReleaser, recover, - overrideBuilderConfig); + result = openWithExistingFile(file, raf, resources, recover, overrideBuilderConfig); } else { // Single-element arrays allow to modify variables within lambda @@ -1536,10 +1534,10 @@ public final class ChronicleMapBuilder implements if (newFile[0]) { int headerSize = headerBuffer[0].remaining(); - result = createWithNewFile(map[0], file, raf, resourceReleaser, headerBuffer[0], + result = createWithNewFile(map[0], file, raf, resources, headerBuffer[0], headerSize); } else { - result = openWithExistingFile(file, raf, resourceReleaser, recover, + result = openWithExistingFile(file, raf, resources, recover, overrideBuilderConfig); } } @@ -1547,7 +1545,7 @@ public final class ChronicleMapBuilder implements return result; } catch (Throwable throwable) { try { - resourceReleaser.releaseManually(); + resources.releaseManually(); } catch (Exception e) { throwable.addSuppressed(e); } @@ -1662,16 +1660,16 @@ public final class ChronicleMapBuilder implements private VanillaChronicleMap createWithNewFile( VanillaChronicleMap map, File file, RandomAccessFile raf, - ChronicleHashResourceReleaser resourceReleaser, ByteBuffer headerBuffer, int headerSize) + ChronicleHashResources resources, ByteBuffer headerBuffer, int headerSize) throws IOException { map.initBeforeMapping(file, raf, headerBuffer.limit(), false); - map.createMappedStoreAndSegments(resourceReleaser); + map.createMappedStoreAndSegments(resources); commitChronicleMapReady(map, raf, headerBuffer, headerSize); return map; } private VanillaChronicleMap openWithExistingFile( - File file, RandomAccessFile raf, ChronicleHashResourceReleaser resourceReleaser, + File file, RandomAccessFile raf, ChronicleHashResources resources, boolean recover, boolean overrideBuilderConfig) throws IOException { try { @@ -1701,13 +1699,13 @@ public final class ChronicleMapBuilder implements } map.initTransientsFromBuilder(this); if (!recover) { - map.createMappedStoreAndSegments(resourceReleaser); + map.createMappedStoreAndSegments(resources); } else { if (!overrideBuilderConfig) writeNotComplete(fileChannel, headerBuffer, headerSize); // if overrideBuilderConfig = true, readiness bit is already set // in writeHeader() call - map.recover(resourceReleaser); + map.recover(resources); commitChronicleMapReady(map, raf, headerBuffer, headerSize); } return map; @@ -1723,16 +1721,15 @@ public final class ChronicleMapBuilder implements replicated = replicationIdentifier != -1; persisted = false; - ChronicleHashResourceReleaser resourceReleaser = - new InMemoryChronicleHashResourceReleaser(); + ChronicleHashResources resources = new InMemoryChronicleHashResources(); try { VanillaChronicleMap map = newMap(); - map.createInMemoryStoreAndSegments(resourceReleaser); + map.createInMemoryStoreAndSegments(resources); prepareMapPublication(map); return map; } catch (Throwable throwable) { try { - resourceReleaser.releaseManually(); + resources.releaseManually(); } catch (Exception e) { throwable.addSuppressed(e); } diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 559889f49..a6ccf43d5 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -154,8 +154,8 @@ public class VanillaChronicleMap initOwnTransients(); } - public void recover(ChronicleHashResourceReleaser resourceReleaser) throws IOException { - basicRecover(resourceReleaser); + public void recover(ChronicleHashResources resources) throws IOException { + basicRecover(resources); try (IterationContext iterationContext = iterationContext()) { iterationContext.recoverSegments(); }