Class ComposedSegmentedLoadWriteStore<K,V,T extends AbstractSegmentedStoreConfiguration>
- All Implemented Interfaces:
Lifecycle
,AdvancedCacheExpirationWriter<K,
,V> AdvancedCacheLoader<K,
,V> AdvancedCacheWriter<K,
,V> AdvancedLoadWriteStore<K,
,V> CacheLoader<K,
,V> CacheWriter<K,
,V> ExternalStore<K,
,V> SegmentedAdvancedLoadWriteStore<K,
V>
AbstractSegmentedStoreConfiguration
.- Since:
- 9.4
- Author:
- wburns
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.infinispan.persistence.spi.AdvancedCacheExpirationWriter
AdvancedCacheExpirationWriter.ExpirationPurgeListener<K,
V> Nested classes/interfaces inherited from interface org.infinispan.persistence.spi.AdvancedCacheWriter
AdvancedCacheWriter.PurgeListener<K>
-
Constructor Summary
ConstructorDescriptionComposedSegmentedLoadWriteStore
(AbstractSegmentedStoreConfiguration<T> configuration) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addSegments
(IntSet segments) Invoked when a node becomes an owner of the given segments.bulkUpdate
(org.reactivestreams.Publisher<MarshallableEntry<? extends K, ? extends V>> publisher) Persist all provided entries to the store in chunks, with the size of each chunk determined by the store implementation.void
clear()
Removes all the data from the storage.void
Removes all the data that maps to the given segments from the storage.boolean
Returns true if the storage contains an entry associated with the given key in the given segmentboolean
Removes the entry for the provided key which is in the given segment.void
deleteBatch
(Iterable<Object> keys) Remove all provided keys from the store in a single batch operation.void
destroy()
Method to be used to destroy and clean up any resources associated with this store.org.reactivestreams.Publisher<MarshallableEntry<K,
V>> entryPublisher
(Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata) Publishes all entries from this store.org.reactivestreams.Publisher<MarshallableEntry<K,
V>> entryPublisher
(IntSet segments, Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata) Publishes all entries from this store.void
forEach
(ObjIntConsumer<? super AdvancedLoadWriteStore> consumer) Method that allows user to directly invoke some method(s) on the underlying store.Fetches an entry from the storage given a segment to optimize this lookup based on.void
Used to initialize a cache loader.org.reactivestreams.Publisher<K>
publishKeys
(Predicate<? super K> filter) Publishes all the keys from this store.org.reactivestreams.Publisher<K>
publishKeys
(IntSet segments, Predicate<? super K> filter) Publishes all the keys that map to the given segments from this store.void
purge
(Executor executor, AdvancedCacheExpirationWriter.ExpirationPurgeListener<K, V> listener) Using the thread in the pool, removed all the expired data from the persistence storage.void
removeSegments
(IntSet segments) Invoked when a node loses ownership of a segment.int
size()
Returns the number of elements in the store.int
Returns the number of elements in the store that map to the given segments that aren't expired.void
start()
Invoked on component startvoid
stop()
Invoked on component stopvoid
write
(int segment, MarshallableEntry<? extends K, ? extends V> entry) Persists the entry to the storage with the given segment to optimize future lookups.Methods inherited from class org.infinispan.persistence.support.AbstractSegmentedAdvancedLoadWriteStore
contains, delete, loadEntry, write
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.infinispan.persistence.spi.AdvancedCacheExpirationWriter
purge
Methods inherited from interface org.infinispan.persistence.spi.CacheWriter
isAvailable
Methods inherited from interface org.infinispan.persistence.spi.ExternalStore
isAvailable
-
Constructor Details
-
ComposedSegmentedLoadWriteStore
-
-
Method Details
-
getKeyMapper
- Specified by:
getKeyMapper
in classAbstractSegmentedAdvancedLoadWriteStore<K,
V>
-
get
Description copied from interface:SegmentedAdvancedLoadWriteStore
Fetches an entry from the storage given a segment to optimize this lookup based on. If aMarshallableEntry
needs to be created here,InitializationContext.getMarshallableEntryFactory()
andInitializationContext.getByteBufferFactory()
should be used.The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is
StoreConfiguration.segmented()
.- Parameters:
segment
- the segment that the key maps tokey
- the key of the entry to fetch- Returns:
- the entry, or null if the entry does not exist
-
contains
Description copied from interface:SegmentedAdvancedLoadWriteStore
Returns true if the storage contains an entry associated with the given key in the given segmentThe provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is
StoreConfiguration.segmented()
.- Parameters:
segment
- the segment that the key maps tokey
- the key to see if exists- Returns:
- true if the key is present in this loader with a given segment
-
write
Description copied from interface:SegmentedAdvancedLoadWriteStore
Persists the entry to the storage with the given segment to optimize future lookups.The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is
StoreConfiguration.segmented()
.- Parameters:
segment
- the segment to persist this entry toentry
- the entry to write to the store- See Also:
-
delete
Description copied from interface:SegmentedAdvancedLoadWriteStore
Removes the entry for the provided key which is in the given segment. This method then returns whether the entry was removed or not.The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is
StoreConfiguration.segmented()
.- Parameters:
segment
- the segment that this key maps tokey
- the key of the entry to remove- Returns:
- true if the entry existed in the persistent store and it was deleted.
-
size
Description copied from interface:SegmentedAdvancedLoadWriteStore
Returns the number of elements in the store that map to the given segments that aren't expired.The segments here must be adhered to and the size must not count any entries that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be
StoreConfiguration.segmented()
.- Parameters:
segments
- the segments which should have their entries counted. Always non null.- Returns:
- the count of entries in the given segments
-
size
public int size()Description copied from interface:AdvancedCacheLoader
Returns the number of elements in the store. -
publishKeys
Description copied from interface:SegmentedAdvancedLoadWriteStore
Publishes all the keys that map to the given segments from this store. The given publisher can be used by as manySubscriber
s as desired. Keys are not retrieved until a given Subscriber requests them from theSubscription
.Stores will return only non expired keys
The segments here must be adhered to and the keys published must not include any that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be
StoreConfiguration.segmented()
.- Parameters:
segments
- the segments that the keys must map to. Always non null.filter
- a filter- Returns:
- a publisher that will provide the keys from the store
-
publishKeys
Description copied from interface:AdvancedCacheLoader
Publishes all the keys from this store. The given publisher can be used by as manySubscriber
s as desired. Keys are not retrieved until a given Subscriber requests them from theSubscription
.Stores will return only non expired keys
- Parameters:
filter
- a filter - null is treated as allowing all entries- Returns:
- a publisher that will provide the keys from the store
-
entryPublisher
public org.reactivestreams.Publisher<MarshallableEntry<K,V>> entryPublisher(IntSet segments, Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata) Description copied from interface:SegmentedAdvancedLoadWriteStore
Publishes all entries from this store. The given publisher can be used by as manySubscriber
s as desired. Entries are not retrieved until a given Subscriber requests them from theSubscription
.If fetchMetadata is true this store must guarantee to not return any expired entries.
The segments here must be adhered to and the entries published must not include any that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be
StoreConfiguration.segmented()
.StoreConfiguration.segmented()
.- Parameters:
segments
- the segments that the keys of the entries must map to. Always non null.filter
- a filter on the keys of the entries that if passed will allow the given entry to be returned from the publisherfetchValue
- whether the value should be included in the marshalled entryfetchMetadata
- whether the metadata should be included in the marshalled entry- Returns:
- a publisher that will provide the entries from the store that map to the given segments
-
entryPublisher
public org.reactivestreams.Publisher<MarshallableEntry<K,V>> entryPublisher(Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata) Description copied from interface:AdvancedCacheLoader
Publishes all entries from this store. The given publisher can be used by as manySubscriber
s as desired. Entries are not retrieved until a given Subscriber requests them from theSubscription
.If fetchMetadata is true this store must guarantee to not return any expired entries.
- Parameters:
filter
- a filter - null is treated as allowing all entriesfetchValue
- 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 wellfetchMetadata
- 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 point fetching the metadata from the persistent store as well- Returns:
- a publisher that will provide the entries from the store
-
clear
public void clear()Description copied from interface:AdvancedCacheWriter
Removes all the data from the storage. -
purge
public void purge(Executor executor, AdvancedCacheExpirationWriter.ExpirationPurgeListener<K, V> listener) Description copied from interface:SegmentedAdvancedLoadWriteStore
Using the thread in the pool, removed all the expired data from the persistence storage. For each removed entry, the supplied listener is invoked. This should be preferred toAdvancedCacheWriter.purge(Executor, PurgeListener)
since it allows for value and metadata to be provided which provides more accurate expiration when coordination is required.- Parameters:
executor
- the executor to invoke the given command onlistener
- the listener that is notified for each expired entry
-
clear
Description copied from interface:SegmentedAdvancedLoadWriteStore
Removes all the data that maps to the given segments from the storage.This method must only remove entries that map to the provided segments.
This method may be invoked irrespective if the configuration is
StoreConfiguration.segmented()
or not.- Parameters:
segments
- data mapping to these segments are removed. Always non null.
-
deleteBatch
Description copied from interface:CacheWriter
Remove all provided keys from the store in a single batch operation. If this is not supported by the underlying store, then keys are removed from the store individually viaCacheWriter.delete(Object)
.- Parameters:
keys
- an Iterable of entry Keys to be removed from the store.
-
bulkUpdate
public CompletionStage<Void> bulkUpdate(org.reactivestreams.Publisher<MarshallableEntry<? extends K, ? extends V>> publisher) Description copied from interface:CacheWriter
Persist all provided entries to the store in chunks, with the size of each chunk determined by the store implementation. If chunking is not supported by the underlying store, then entries are written to the store individually viaCacheWriter.write(MarshallableEntry)
.- Parameters:
publisher
- aPublisher
ofMarshallableEntry
instances
-
init
Description copied from interface:CacheLoader
Used to initialize a cache loader. Typically invoked by thePersistenceManager
when setting up cache loaders. -
start
public void start()Description copied from interface:Lifecycle
Invoked on component start -
stop
public void stop()Description copied from interface:Lifecycle
Invoked on component stop -
destroy
public void destroy()Description copied from interface:ExternalStore
Method to be used to destroy and clean up any resources associated with this store. This is normally only useful for non shared stores.This method will ensure the store is stopped and properly cleans up all resources for it.
-
addSegments
Description copied from interface:SegmentedAdvancedLoadWriteStore
Invoked when a node becomes an owner of the given segments. Note this method is only invoked for non shared store implementations.This method may be invoked irrespective if the configuration is
StoreConfiguration.segmented()
or not.- Parameters:
segments
- segments to associate with this store
-
removeSegments
Description copied from interface:SegmentedAdvancedLoadWriteStore
Invoked when a node loses ownership of a segment. The provided segments are the ones this node no longer owns. Note this method is only invoked for non shared store implementations.This method may be invoked irrespective if the configuration is
StoreConfiguration.segmented()
or not.StoreConfiguration.segmented()
.- Parameters:
segments
- segments that should no longer be associated with this store
-
forEach
Method that allows user to directly invoke some method(s) on the underlying store. The segment that each store maps to is also provided as an argument to the consumer- Parameters:
consumer
- callback for every store that is currently installed
-