public class PartitionSplittingBackingMap extends AbstractKeyBasedMap implements com.oracle.coherence.common.base.Disposable, PartitionAwareBackingMap
Also, as with all usage of BinaryMap, if the data are stored off-heap, the proper use of the MaxDirectMemorySize JVM switch will be crucial.
Modifier and Type | Class and Description |
---|---|
class |
PartitionSplittingBackingMap.AggregatingCacheStatistics
An implementation of the CacheStatics interface that aggregates across
the CacheStatics objects provided by each of the backing maps
corresponding to the partitions managed by this
PartitionSplittingBackingMap.
|
protected class |
PartitionSplittingBackingMap.KeySet
A KeySet implementation optimized for PartitionSplittingBackingMap.
|
static class |
PartitionSplittingBackingMap.MapArray
The MapArray is a data structure that provides a mapping between
partition IDs and backing maps.
|
class |
PartitionSplittingBackingMap.MaskedPartitionMap
A read-only view into a subset of backing maps managed by the underlying
PartitionSplittingBackingMap.
|
class |
PartitionSplittingBackingMap.PartitionedIterator
An Iterator designed to ensure that a stable copy of each partition's
keys is available for the duration of the iteration over its keys.
|
AbstractKeyBasedMap.DeferredCacheEvent<K,V>, AbstractKeyBasedMap.EntrySet, AbstractKeyBasedMap.ValuesCollection
Base.LoggingWriter, Base.StackFrame
Constructor and Description |
---|
PartitionSplittingBackingMap(BackingMapManager bmm,
String sName)
Create a PartitionSplittingBackingMap that will delegate each
partition's data and operations to a separate backing map.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Clear all key/value mappings.
|
boolean |
containsKey(Object oKey)
Returns true if this map contains a mapping for the specified
key.
|
void |
createPartition(int nPid)
Add a partition to the PartitionAwareBackingMap.
|
void |
destroyPartition(int nPid)
Remove a partition from the PartitionAwareBackingMap.
|
void |
dispose()
Invoked when all resources owned by the implementer can safely be
released.
|
Object |
get(Object oKey)
Returns the value to which this map maps the specified key.
|
protected Map |
getBackingMap(Object oKey)
Obtain a backing map for the specified key.
|
BackingMapManager |
getBackingMapManager()
Obtain the BackingMapManager that this PartitionAwareBackingMap uses to
instantiate and release backing maps.
|
CacheStatistics |
getCacheStatistics()
Returns the CacheStatistics for this cache.
|
protected BackingMapManagerContext |
getContext()
Obtain the BackingMapManagerContext that provides the partition
information for keys that are stored in the backing map.
|
protected PartitionSplittingBackingMap.MapArray |
getMapArray()
Get the mapping between partition IDs and backing maps.
|
String |
getName()
Determine the name of the cache for which this PartitionAwareBackingMap
exists.
|
Map |
getPartitionMap(int nPid)
Obtain a Map view for the data in a specific partition.
|
Map |
getPartitionMap(PartitionSet partitions)
Obtain a Map view for the data in a specific set of partitions.
|
protected Set |
instantiateKeySet()
Factory pattern: Create a Set that represents the keys in the Map
|
boolean |
isEmpty()
Returns true if this map contains no key-value mappings.
|
protected boolean |
isEmpty(Map[] amap)
Return true iff a subset of the maps that belong to specified partitions
contains no entries.
|
boolean |
isStrict()
Determine if any access to data in missing partitions is being treated
as an error.
|
protected Iterator |
iterateKeys()
Create an iterator over the keys in this Map.
|
protected Iterator |
iterateKeys(Map[] amap)
Create an iterator over the keys in maps that belong to partitions
contained in the specified PartitionSet.
|
protected String |
makeName(String sName,
int nPid)
Format a synthetic name for a partition-specific backing map.
|
Object |
put(Object oKey,
Object oValue)
Associates the specified value with the specified key in this map.
|
void |
putAll(Map map)
Copies all of the mappings from the specified map to this map.
|
protected void |
putAllInternal(Map mapPart,
Map mapUpdate)
Put all entries in mapUpdate into the provided map.
|
protected Object |
putInternal(Map mapPart,
Object oKey,
Object oValue)
Put the key and value into a map representing a given partition.
|
Object |
remove(Object oKey)
Removes the mapping for this key from this map if present.
|
protected boolean |
removeBlind(Object oKey)
Removes the mapping for this key from this map if present.
|
protected void |
reportMissingPartition(Object oKey,
int nPid)
Report a missing partition according to the "strict" flag rules.
|
void |
setStrict(boolean fStrict)
Specify whether any access to data in missing partitions should be treated
as an error.
|
int |
size()
Returns the number of key-value mappings in this map.
|
protected int |
size(Map[] amap)
Return the number of key-value mappings in a subset of the maps that
belong to specified partitions.
|
String |
toString()
Return a human-readable description for this PartitionBackingMap.
|
String |
toString(boolean fVerbose)
Return a human-readable description for this PartitionBackingMap.
|
clone, containsValue, entrySet, equals, getAll, hashCode, instantiateEntrySet, instantiateValues, keySet, values
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
finalize, getClass, notify, notifyAll, wait, wait, wait
compute, computeIfAbsent, computeIfPresent, containsValue, entrySet, equals, forEach, getOrDefault, hashCode, keySet, merge, putIfAbsent, remove, replace, replace, replaceAll, values
public PartitionSplittingBackingMap(BackingMapManager bmm, String sName)
bmm
- a BackingMapManager that knows how to create and release
the backing maps that this PartitionSplittingBackingMap is
responsible forsName
- the cache name for which this backing map existspublic void clear()
clear
in interface Map
clear
in class AbstractKeyBasedMap
public boolean containsKey(Object oKey)
containsKey
in interface Map
containsKey
in class AbstractKeyBasedMap
public Object get(Object oKey)
get
in interface Map
get
in class AbstractKeyBasedMap
oKey
- the key objectpublic boolean isEmpty()
isEmpty
in interface Map
isEmpty
in class AbstractKeyBasedMap
public Object put(Object oKey, Object oValue)
put
in interface Map
put
in class AbstractKeyBasedMap
oKey
- key with which the specified value is to be associatedoValue
- value to be associated with the specified keypublic void putAll(Map map)
AbstractKeyBasedMap.put(K, V)
on this map once for each mapping in the passed map. The behavior of
this operation is unspecified if the passed map is modified while the
operation is in progress.putAll
in interface Map
putAll
in class AbstractKeyBasedMap
map
- the Map containing the key/value pairings to put into this
Mappublic Object remove(Object oKey)
remove
in interface Map
remove
in class AbstractKeyBasedMap
oKey
- key whose mapping is to be removed from the mapprotected boolean removeBlind(Object oKey)
removeBlind
in class AbstractKeyBasedMap
oKey
- key whose mapping is to be removed from the mappublic int size()
size
in interface Map
size
in class AbstractKeyBasedMap
protected Iterator iterateKeys()
iterateKeys
in class AbstractKeyBasedMap
protected Set instantiateKeySet()
instantiateKeySet
in class AbstractKeyBasedMap
public CacheStatistics getCacheStatistics()
public BackingMapManager getBackingMapManager()
getBackingMapManager
in interface PartitionAwareBackingMap
public String getName()
getName
in interface PartitionAwareBackingMap
public void createPartition(int nPid)
createPartition
in interface PartitionAwareBackingMap
nPid
- the partition id that the PartitionAwareBackingMap will be
responsible for, starting at this instantpublic void destroyPartition(int nPid)
destroyPartition
in interface PartitionAwareBackingMap
nPid
- the partition id that the PartitionAwareBackingMap will no
longer be responsible for, starting at this instantpublic Map getPartitionMap(int nPid)
getPartitionMap
in interface PartitionAwareBackingMap
nPid
- the partition IDpublic Map getPartitionMap(PartitionSet partitions)
getPartitionMap
in interface PartitionAwareBackingMap
partitions
- the masking PartitionSetpublic void dispose()
Once disposed of the object should no longer be considered to be usable.
Note the Disposable interface is compatible with try-with-resources which will automatically invoke this method.
dispose
in interface com.oracle.coherence.common.base.Disposable
public boolean isStrict()
public void setStrict(boolean fStrict)
fStrict
- if true, any access to missing partitions should being
treated as errorprotected Object putInternal(Map mapPart, Object oKey, Object oValue)
mapPart
- a partition mapoKey
- oKey with which the specified value is to be associatedoValue
- oValue to be associated with the specified oKeyprotected void putAllInternal(Map mapPart, Map mapUpdate)
mapPart
- a partition mapmapUpdate
- the Map containing the key/value pairings to put into
mapPartprotected BackingMapManagerContext getContext()
protected int size(Map[] amap)
amap
- the array of maps to processprotected boolean isEmpty(Map[] amap)
amap
- the array of maps to processprotected Iterator iterateKeys(Map[] amap)
amap
- the array of maps to processprotected PartitionSplittingBackingMap.MapArray getMapArray()
protected Map getBackingMap(Object oKey)
oKey
- the keyprotected String makeName(String sName, int nPid)
sName
- the name of the cachenPid
- the partition numberpublic String toString()
toString
in class AbstractKeyBasedMap
public String toString(boolean fVerbose)
fVerbose
- if true, generate a verbose descritionprotected void reportMissingPartition(Object oKey, int nPid)
oKey
- the key for which an operation failed (optional)nPid
- the missing partition; meaningful only if oKey is null