mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-343 add an option not to erase old removed entries from ReplicatedChronicleMap
This commit is contained in:
@@ -326,6 +326,18 @@ public interface ChronicleHashBuilder<K, H extends ChronicleHash<K, ?, ?, ?>,
|
||||
*/
|
||||
B removedEntryCleanupTimeout(long removedEntryCleanupTimeout, TimeUnit unit);
|
||||
|
||||
/**
|
||||
* Configures if replicated Chronicle Hashes, constructed by this builder, should
|
||||
* completely erase entries, removed some time ago. See {@link #removedEntryCleanupTimeout(
|
||||
* long, TimeUnit)} for more details on this mechanism.
|
||||
*
|
||||
* <p>Default value is {@code true} -- old removed entries are erased with 1 second timeout.
|
||||
*
|
||||
* @param cleanupRemovedEntries if stale removed entries should be purged from Chronicle Hash
|
||||
* @return this builder back
|
||||
*/
|
||||
B cleanupRemovedEntries(boolean cleanupRemovedEntries);
|
||||
|
||||
/**
|
||||
* Configures a {@link BytesMarshallerFactory} to be used with {@link
|
||||
* BytesMarshallableSerializer}, which is a default {@link #objectSerializer ObjectSerializer},
|
||||
|
||||
@@ -164,6 +164,7 @@ public final class ChronicleMapBuilder<K, V> implements
|
||||
// replication
|
||||
private TimeProvider timeProvider = TimeProvider.SYSTEM;
|
||||
long cleanupTimeout = 1;
|
||||
private boolean cleanupRemovedEntries = true;
|
||||
TimeUnit cleanupTimeoutUnit = TimeUnit.SECONDS;
|
||||
|
||||
private BytesMarshallerFactory bytesMarshallerFactory;
|
||||
@@ -1075,6 +1076,12 @@ public final class ChronicleMapBuilder<K, V> implements
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronicleMapBuilder<K, V> cleanupRemovedEntries(boolean cleanupRemovedEntries) {
|
||||
this.cleanupRemovedEntries = cleanupRemovedEntries;
|
||||
return this;
|
||||
}
|
||||
|
||||
TimeProvider timeProvider() {
|
||||
return timeProvider;
|
||||
}
|
||||
@@ -1571,7 +1578,8 @@ public final class ChronicleMapBuilder<K, V> implements
|
||||
throw new AssertionError("Only one non-null replication should be passed");
|
||||
|
||||
ReplicatedChronicleMap result = (ReplicatedChronicleMap) map;
|
||||
establishCleanupThread(result);
|
||||
if (cleanupRemovedEntries)
|
||||
establishCleanupThread(result);
|
||||
|
||||
List<Replicator> replicators = new ArrayList<>(2);
|
||||
if (singleHashReplication != null) {
|
||||
|
||||
@@ -197,6 +197,12 @@ public final class ChronicleSetBuilder<K>
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronicleSetBuilder<K> cleanupRemovedEntries(boolean cleanupRemovedEntries) {
|
||||
chronicleMapBuilder.cleanupRemovedEntries(cleanupRemovedEntries);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronicleSetBuilder<K> bytesMarshallerFactory(
|
||||
BytesMarshallerFactory bytesMarshallerFactory) {
|
||||
|
||||
Reference in New Issue
Block a user