public class RocksDBStore<K,V> extends Object implements AdvancedLoadWriteStore<K,V>
AdvancedCacheLoader.CacheLoaderTask<K,V>, AdvancedCacheLoader.TaskContextAdvancedCacheWriter.PurgeListener<K>| Constructor and Description |
|---|
RocksDBStore() |
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Removes all the data from the storage.
|
boolean |
contains(Object key)
Returns true if the storage contains an entry associated with the given key.
|
boolean |
delete(Object key) |
protected void |
destroyDatabase(String location) |
void |
init(InitializationContext ctx)
Used to initialize a cache loader.
|
MarshalledEntry |
load(Object key)
Fetches an entry from the storage.
|
protected org.rocksdb.RocksDB |
openDatabase(String location,
org.rocksdb.Options options)
Creates database if it doesn't exist.
|
void |
process(KeyFilter keyFilter,
AdvancedCacheLoader.CacheLoaderTask cacheLoaderTask,
Executor executor,
boolean loadValues,
boolean loadMetadata)
Iterates in parallel over the entries in the storage using the threads from the executor pool.
|
void |
purge(Executor executor,
AdvancedCacheWriter.PurgeListener purgeListener)
Using the thread in the pool, removed all the expired data from the persistence storage.
|
protected void |
reinitAllDatabases() |
protected org.rocksdb.RocksDB |
reinitDatabase(String location,
org.rocksdb.Options options) |
int |
size()
Returns the number of elements in the store.
|
void |
start()
Invoked on component start
|
void |
stop()
Invoked on component stop
|
void |
write(MarshalledEntry me)
Persists the entry to the storage.
|
void |
writeBatch(Iterable<MarshalledEntry<? extends K,? extends V>> marshalledEntries)
Persist all provided entries to the store in a single batch update.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitdeleteBatchpublic void init(InitializationContext ctx)
CacheLoaderPersistenceManager
when setting up cache loaders.init in interface CacheLoader<K,V>init in interface CacheWriter<K,V>public void start()
Lifecycleprotected org.rocksdb.RocksDB openDatabase(String location, org.rocksdb.Options options) throws IOException, org.rocksdb.RocksDBException
IOExceptionorg.rocksdb.RocksDBExceptionprotected void destroyDatabase(String location) throws IOException
IOExceptionprotected org.rocksdb.RocksDB reinitDatabase(String location, org.rocksdb.Options options) throws IOException, org.rocksdb.RocksDBException
IOExceptionorg.rocksdb.RocksDBExceptionprotected void reinitAllDatabases()
throws IOException,
org.rocksdb.RocksDBException
IOExceptionorg.rocksdb.RocksDBExceptionpublic void stop()
Lifecyclepublic void clear()
AdvancedCacheWriterclear in interface AdvancedCacheWriter<K,V>public int size()
AdvancedCacheLoadersize in interface AdvancedCacheLoader<K,V>public boolean contains(Object key)
CacheLoadercontains in interface CacheLoader<K,V>public void process(KeyFilter keyFilter, AdvancedCacheLoader.CacheLoaderTask cacheLoaderTask, Executor executor, boolean loadValues, boolean loadMetadata)
AdvancedCacheLoaderCacheLoaderTask#processEntry(MarshalledEntry, TaskContext) is
invoked. Before passing an entry to the callback task, the entry should be validated against the filter.
Implementors should build an AdvancedCacheLoader.TaskContext instance (implementation) that is fed to the AdvancedCacheLoader.CacheLoaderTask on every invocation. The AdvancedCacheLoader.CacheLoaderTask might invoke AdvancedCacheLoader.TaskContext.stop() at any time, so implementors of this method
should verify TaskContext's state for early termination of iteration. The method should only return once the
iteration is complete or as soon as possible in the case TaskContext.stop() is invoked.process in interface AdvancedCacheLoader<K,V>keyFilter - to validate which entries should be feed into the task. Might be null.cacheLoaderTask - callback to be invoked in parallel for each stored entry that passes the filter checkexecutor - an external thread pool to be used for parallel iterationloadValues - whether or not to fetch the value from the persistent store. E.g. if the iteration is
intended only over the key set, no point fetching the values from the persistent store as
wellloadMetadata - whether or not to fetch the metadata from the persistent store. E.g. if the iteration is
intended only ove the key set, then no pint fetching the metadata from the persistent store
as wellpublic boolean delete(Object key)
delete in interface CacheWriter<K,V>public void write(MarshalledEntry me)
CacheWriterwrite in interface CacheWriter<K,V>MarshalledEntrypublic MarshalledEntry load(Object key)
CacheLoaderMarshalledEntry needs to be created here, InitializationContext.getMarshalledEntryFactory() and InitializationContext.getByteBufferFactory() should be used.load in interface CacheLoader<K,V>public void writeBatch(Iterable<MarshalledEntry<? extends K,? extends V>> marshalledEntries)
CacheWriterCacheWriter.write(MarshalledEntry).writeBatch in interface CacheWriter<K,V>marshalledEntries - an Iterable of MarshalledEntry to be written to the store. Implementations
should take into account that the passed iterable may contain no entries.public void purge(Executor executor, AdvancedCacheWriter.PurgeListener purgeListener)
AdvancedCacheWriterWhen this method returns all entries will be purged and no tasks will be running due to this loader in the provided executor. If however an exception is thrown there could be tasks still pending or running in the executor.
purge in interface AdvancedCacheWriter<K,V>Copyright © 2018 JBoss, a division of Red Hat. All rights reserved.