public class TerracottaBootstrapCacheLoader extends MemoryLimitedCacheLoader implements Disposable
BootstrapCacheLoader
that will load Elements into a Terracotta clustered cache, based on a previously
snapshotted key set. It is also responsible to create snapshot files to diskModifier and Type | Class and Description |
---|---|
private class |
TerracottaBootstrapCacheLoader.BootstrapThread
A background daemon thread that asynchronously calls doLoad
|
Modifier and Type | Field and Description |
---|---|
private boolean |
aSynchronous |
static boolean |
DEFAULT_DEDICATED_THREAD
The default on whether to do the snapshot on a dedicated thread or using the CacheManager's
ScheduledExecutorService |
static long |
DEFAULT_INTERVAL
The default interval in seconds, between each snapshot
|
private DiskStorePathManager |
diskStorePathManager |
private boolean |
doKeySnapshot |
private boolean |
doKeySnapshotOnDedicatedThread |
private boolean |
doKeySnapshotOnDispose |
private boolean |
immediateShutdown |
private long |
interval |
private KeySnapshotter |
keySnapshotter |
private static org.slf4j.Logger |
LOG |
Modifier | Constructor and Description |
---|---|
private |
TerracottaBootstrapCacheLoader(boolean doKeySnapshot,
boolean aSynchronous,
java.lang.String directory,
long interval,
boolean doKeySnapshotOnDedicatedThread) |
|
TerracottaBootstrapCacheLoader(boolean asynchronous,
java.lang.String directory,
boolean doKeySnapshots)
Constructor
|
|
TerracottaBootstrapCacheLoader(boolean asynchronous,
java.lang.String directory,
long interval)
Constructor
|
|
TerracottaBootstrapCacheLoader(boolean asynchronous,
java.lang.String directory,
long interval,
boolean onDedicatedThread)
Constructor
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Clones the loader
|
void |
dispose()
Will shut the keysnapshot thread and other resources down.
|
private void |
doLoad(Ehcache cache) |
void |
doLocalKeySnapshot()
Calling this method will result in a snapshot being taken or wait for the one in progress to finish
|
(package private) KeySnapshotter |
getKeySnapshotter()
Accessor to the associated
KeySnapshotter |
boolean |
isAsynchronous() |
boolean |
isImmediateShutdown()
Whether the on going keysnapshot will finish before the instance is disposed
|
void |
load(Ehcache cache)
Instructs the loader to load the given cache
|
void |
setImmediateShutdown(boolean immediateShutdown)
Sets whether the disposal of the instance will let the potential current key set being written to disk finish, or whether the
shutdown will be immediate
|
void |
setSnapshotOnDispose(boolean doKeySnapshotOnDispose)
Configures the Loader to take a snapshot when it is being disposed
|
isInMemoryLimitReached
public static final long DEFAULT_INTERVAL
public static final boolean DEFAULT_DEDICATED_THREAD
ScheduledExecutorService
private static final org.slf4j.Logger LOG
private final boolean aSynchronous
private final boolean doKeySnapshot
private final boolean doKeySnapshotOnDedicatedThread
private final long interval
private final DiskStorePathManager diskStorePathManager
private volatile KeySnapshotter keySnapshotter
private volatile boolean immediateShutdown
private volatile boolean doKeySnapshotOnDispose
private TerracottaBootstrapCacheLoader(boolean doKeySnapshot, boolean aSynchronous, java.lang.String directory, long interval, boolean doKeySnapshotOnDedicatedThread)
public TerracottaBootstrapCacheLoader(boolean asynchronous, java.lang.String directory, boolean doKeySnapshots)
asynchronous
- do the loading asynchronously, or synchronouslydirectory
- the directory to read snapshot files from, and write them todoKeySnapshots
- Whether to do keysnapshottingpublic TerracottaBootstrapCacheLoader(boolean asynchronous, java.lang.String directory, long interval)
asynchronous
- do the loading asynchronously, or synchronouslydirectory
- the directory to read snapshot files from, and write them tointerval
- the interval in seconds at which the snapshots of the local key set has to occurpublic TerracottaBootstrapCacheLoader(boolean asynchronous, java.lang.String directory, long interval, boolean onDedicatedThread)
asynchronous
- do the loading asynchronously, or synchronouslydirectory
- the directory to read snapshot files from, and write them tointerval
- the interval in seconds at which the snapshots of the local key set has to occuronDedicatedThread
- whether to do the snapshot on a dedicated thread or using the CacheManager's
ScheduledExecutorService
public boolean isImmediateShutdown()
Disposable
public void setImmediateShutdown(boolean immediateShutdown)
immediateShutdown
- true if immediate, false to let the snapshot finishpublic void load(Ehcache cache) throws CacheException
load
in interface BootstrapCacheLoader
CacheException
private void doLoad(Ehcache cache)
public boolean isAsynchronous()
isAsynchronous
in interface BootstrapCacheLoader
public void dispose()
setImmediateShutdown(boolean)
valuedispose
in interface Disposable
public void doLocalKeySnapshot() throws java.io.IOException
java.io.IOException
- On exception being thrown while doing the snapshotpublic java.lang.Object clone() throws java.lang.CloneNotSupportedException
clone
in interface BootstrapCacheLoader
clone
in class MemoryLimitedCacheLoader
java.lang.CloneNotSupportedException
KeySnapshotter getKeySnapshotter()
KeySnapshotter
KeySnapshotter
used by this loader instancepublic void setSnapshotOnDispose(boolean doKeySnapshotOnDispose)
doKeySnapshotOnDispose
- whether to snapshot on loader disposal