Rename ChronicleHashResourceReleaser to ChronicleHashResources

This commit is contained in:
leventov
2016-12-10 21:03:20 -06:00
parent 7a68cfacac
commit 9e88392db6
6 changed files with 39 additions and 40 deletions
@@ -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<MemoryResource> memoryResources = new ArrayList<>(1);
@@ -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() {
@@ -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;
}
@@ -129,7 +129,7 @@ public abstract class VanillaChronicleHash<K,
// Resources
private transient File file;
private transient RandomAccessFile raf;
private transient ChronicleHashResourceReleaser resourceReleaser;
private transient ChronicleHashResources resources;
private transient Cleaner cleaner;
/////////////////////////////////////////////////
@@ -446,9 +446,9 @@ public abstract class VanillaChronicleHash<K,
return CACHE_LINES.align(headerSize, BYTES);
}
public final void createInMemoryStoreAndSegments(
ChronicleHashResourceReleaser resourceReleaser) throws IOException {
this.resourceReleaser = resourceReleaser;
public final void createInMemoryStoreAndSegments(ChronicleHashResources resources)
throws IOException {
this.resources = resources;
BytesStore bytesStore = nativeBytesStoreWithFixedCapacity(sizeInBytesWithoutTiers());
createStoreAndSegments(bytesStore);
}
@@ -495,22 +495,22 @@ public abstract class VanillaChronicleHash<K,
}
public void registerCleaner() {
this.cleaner = Cleaner.create(this, resourceReleaser);
this.cleaner = Cleaner.create(this, resources);
}
public void addToOnExitHook() {
ChronicleHashCloseOnExitHook.add(this);
}
public final void createMappedStoreAndSegments(ChronicleHashResourceReleaser resourceReleaser)
public final void createMappedStoreAndSegments(ChronicleHashResources resources)
throws IOException {
this.resourceReleaser = resourceReleaser;
this.resources = resources;
createStoreAndSegments(map(dataStoreSize(), 0));
}
public final void basicRecover(ChronicleHashResourceReleaser resourceReleaser)
public final void basicRecover(ChronicleHashResources resources)
throws IOException {
this.resourceReleaser = resourceReleaser;
this.resources = resources;
long segmentHeadersOffset = globalMutableState().getSegmentHeadersOffset();
if (segmentHeadersOffset <= 0 || segmentHeadersOffset % 4096 != 0 ||
segmentHeadersOffset > GIGABYTES.toBytes(1)) {
@@ -688,8 +688,8 @@ public abstract class VanillaChronicleHash<K,
}
}
resourceReleaser.releaseManually();
// Releases nothing after resourceReleaser.releaseManually(), only removes the cleaner
resources.releaseManually();
// Releases nothing after resources.releaseManually(), only removes the cleaner
// from the internal linked list of all cleaners.
cleaner.clean();
ChronicleHashCloseOnExitHook.remove(this);
@@ -794,7 +794,7 @@ public abstract class VanillaChronicleHash<K,
@Override
public long offHeapMemoryUsed() {
return resourceReleaser.totalMemory();
return resources.totalMemory();
}
public long allocateTier() {
@@ -1015,7 +1015,7 @@ public abstract class VanillaChronicleHash<K,
raf.setLength(minFileSize);
}
long address = OS.map(fileChannel, READ_WRITE, mappingOffsetInFile, mapSize);
resourceReleaser.addMemoryResource(address, mapSize);
resources.addMemoryResource(address, mapSize);
return new NativeBytesStore(address, mapSize, null, false);
}
@@ -1033,7 +1033,7 @@ public abstract class VanillaChronicleHash<K,
private BytesStore nativeBytesStoreWithFixedCapacity(long capacity) {
long address = OS.memory().allocate(capacity);
resourceReleaser.addMemoryResource(address, capacity);
resources.addMemoryResource(address, capacity);
return new NativeBytesStore<>(address, capacity, null, false);
}
@@ -1508,13 +1508,11 @@ public final class ChronicleMapBuilder<K, V> implements
file.createNewFile();
}
RandomAccessFile raf = CanonicalRandomAccessFiles.acquire(file);
ChronicleHashResourceReleaser resourceReleaser =
new PersistedChronicleHashResourceReleaser(file);
ChronicleHashResources resources = new PersistedChronicleHashResources(file);
try {
VanillaChronicleMap<K, V, ?> 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<K, V> 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<K, V> 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<K, V> implements
private VanillaChronicleMap<K, V, ?> createWithNewFile(
VanillaChronicleMap<K, V, ?> 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<K, V, ?> 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<K, V> 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<K, V> implements
replicated = replicationIdentifier != -1;
persisted = false;
ChronicleHashResourceReleaser resourceReleaser =
new InMemoryChronicleHashResourceReleaser();
ChronicleHashResources resources = new InMemoryChronicleHashResources();
try {
VanillaChronicleMap<K, V, ?> 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);
}
@@ -154,8 +154,8 @@ public class VanillaChronicleMap<K, V, R>
initOwnTransients();
}
public void recover(ChronicleHashResourceReleaser resourceReleaser) throws IOException {
basicRecover(resourceReleaser);
public void recover(ChronicleHashResources resources) throws IOException {
basicRecover(resources);
try (IterationContext<K, V, ?> iterationContext = iterationContext()) {
iterationContext.recoverSegments();
}