public abstract class AbstractCacheService extends Object implements ICacheService, PreJoinAwareService, PostJoinAwareService, PartitionAwareService, QuorumAwareService, SplitBrainHandlerService
CACHE_SUPPORT_NOT_AVAILABLE_ERROR_MESSAGE, SERVICE_NAME| Constructor and Description |
|---|
AbstractCacheService() |
| Modifier and Type | Method and Description |
|---|---|
void |
addCacheResource(String cacheNameWithPrefix,
Closeable resource) |
String |
addInvalidationListener(String cacheNameWithPrefix,
CacheEventListener listener,
boolean localOnly)
Registers and
CacheEventListener for specified cacheNameWithPrefix |
void |
beforeMigration(PartitionMigrationEvent event)
Called before migration process starts, on both source and destination members.
|
void |
cacheEntryListenerDeregistered(String name,
javax.cache.configuration.CacheEntryListenerConfiguration cacheEntryListenerConfiguration) |
void |
cacheEntryListenerRegistered(String name,
javax.cache.configuration.CacheEntryListenerConfiguration cacheEntryListenerConfiguration) |
protected void |
closeSegments(String name) |
void |
commitMigration(PartitionMigrationEvent event)
Commits the migration process for this service, on both source and destination members.
|
CacheStatisticsImpl |
createCacheStatIfAbsent(String cacheNameWithPrefix) |
DistributedObject |
createDistributedObject(String cacheNameWithPrefix)
Creates a distributed object.
|
protected abstract ICacheRecordStore |
createNewRecordStore(String cacheNameWithPrefix,
int partitionId) |
protected abstract CacheOperationProvider |
createOperationProvider(String nameWithPrefix,
InMemoryFormat inMemoryFormat) |
void |
deleteCache(String cacheNameWithPrefix,
String callerUuid,
boolean destroy) |
CacheConfig |
deleteCacheConfig(String cacheNameWithPrefix) |
protected void |
deleteCacheResources(String name) |
void |
deleteCacheStat(String cacheNameWithPrefix) |
void |
deregisterAllListener(String cacheNameWithPrefix) |
boolean |
deregisterListener(String cacheNameWithPrefix,
String registrationId) |
void |
destroyDistributedObject(String objectName)
Destroys a distributed object.
|
protected void |
destroySegments(CacheConfig cacheConfig) |
void |
dispatchEvent(Object event,
CacheEventListener listener)
Notifies the service of a published event.
|
CacheConfig |
findCacheConfig(String simpleName) |
CacheConfig |
getCacheConfig(String cacheNameWithPrefix) |
Collection<CacheConfig> |
getCacheConfigs() |
CacheContext |
getCacheContext(String name) |
CacheEventHandler |
getCacheEventHandler() |
CacheOperationProvider |
getCacheOperationProvider(String cacheNameWithPrefix,
InMemoryFormat inMemoryFormat)
Creates cache operations according to the storage-type of the cache
|
CacheEventJournal |
getEventJournal()
Returns an interface for interacting with the cache event journals.
|
NodeEngine |
getNodeEngine() |
CacheContext |
getOrCreateCacheContext(String cacheNameWithPrefix) |
ICacheRecordStore |
getOrCreateRecordStore(String cacheNameWithPrefix,
int partitionId)
Gets or creates a cache record store with the prefixed
cacheNameWithPrefix
and partition ID. |
Operation |
getPostJoinOperation()
Post join operations must be lock free, meaning no locks at all:
no partition locks, no key-based locks, no service level locks, no database interaction!
The
Operation.getPartitionId() method should return a negative value. |
Operation |
getPreJoinOperation()
An operation to be executed on the joining member before it is set as joined.
|
String |
getQuorumName(String cacheName)
Gets the name of the quorum associated with specified cache
|
ICacheRecordStore |
getRecordStore(String cacheNameWithPrefix,
int partitionId)
Returns a cache record store with the prefixed
cacheNameWithPrefix and partition ID
or null if one doesn't exist. |
CachePartitionSegment |
getSegment(int partitionId) |
CacheStatisticsImpl |
getStatistics(String cacheNameWithPrefix) |
void |
init(NodeEngine nodeEngine,
Properties properties)
Initializes this ManagedService
|
protected abstract CachePartitionSegment |
newPartitionSegment(int partitionId) |
void |
onPartitionLost(IPartitionLostEvent partitionLostEvent)
Invoked when a partition lost is detected
|
protected void |
postInit(NodeEngine nodeEngine,
Properties properties) |
Runnable |
prepareMergeRunnable()
When the 2 separate clusters merge (resolve a split brain), this method is called to return
a Runnable that will merge the clusters.
|
protected void |
publishCachePartitionLostEvent(String cacheName,
int partitionId) |
void |
publishEvent(CacheEventContext cacheEventContext) |
void |
publishEvent(String cacheNameWithPrefix,
CacheEventSet eventSet,
int orderKey) |
CacheConfig |
putCacheConfigIfAbsent(CacheConfig config) |
String |
registerListener(String cacheNameWithPrefix,
CacheEventListener listener,
boolean isLocal) |
String |
registerListener(String cacheNameWithPrefix,
CacheEventListener listener,
EventFilter eventFilter,
boolean isLocal) |
protected String |
registerListenerInternal(String cacheNameWithPrefix,
CacheEventListener listener,
EventFilter eventFilter,
boolean isLocal) |
void |
reset()
reset this ManagedService back to initial state.
|
void |
rollbackMigration(PartitionMigrationEvent event)
Rollback the migration process for this service, on both source and destination members.
|
void |
sendInvalidationEvent(String cacheNameWithPrefix,
Data key,
String sourceUuid)
Sends an invalidation event for given
cacheName with specified key
from mentioned source with sourceUuid. |
void |
setManagementEnabled(CacheConfig cacheConfig,
String cacheNameWithPrefix,
boolean enabled) |
void |
setStatisticsEnabled(CacheConfig cacheConfig,
String cacheNameWithPrefix,
boolean enabled) |
void |
shutdown(boolean terminate)
Shuts down this ManagedService.
|
Data |
toData(Object object) |
Object |
toObject(Object data) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetCacheWanEventPublisher, isWanReplicationEnabledgetAllServiceNamespaces, isKnownServiceNamespace, prepareReplicationOperationprepareReplicationOperationprotected final ConcurrentMap<String,CacheConfig> configs
CacheConfigprotected final ConcurrentMap<String,CacheContext> cacheContexts
CacheContextprotected final ConcurrentMap<String,CacheStatisticsImpl> statistics
CacheStatisticsImplprotected final ConcurrentMap<String,Set<Closeable>> resources
Closeable resourcesprotected final ConcurrentMap<String,Closeable> closeableListeners
protected final ConcurrentMap<String,CacheOperationProvider> operationProviderCache
protected final ConstructorFunction<String,CacheContext> cacheContextsConstructorFunction
protected final ConstructorFunction<String,CacheStatisticsImpl> cacheStatisticsConstructorFunction
protected final ContextMutexFactory cacheResourcesMutexFactory
protected final ConstructorFunction<String,Set<Closeable>> cacheResourcesConstructorFunction
protected NodeEngine nodeEngine
protected CachePartitionSegment[] segments
protected CacheEventHandler cacheEventHandler
protected com.hazelcast.cache.impl.CacheSplitBrainHandler cacheSplitBrainHandler
protected RingbufferCacheEventJournalImpl eventJournal
protected ILogger logger
public final void init(NodeEngine nodeEngine, Properties properties)
ManagedServiceinit in interface ManagedServicenodeEngine - the NodeEngine that this ManagedService belongs to.properties - the Properties. Can be used to pass settings to the service.protected void postInit(NodeEngine nodeEngine, Properties properties)
protected abstract CachePartitionSegment newPartitionSegment(int partitionId)
protected abstract ICacheRecordStore createNewRecordStore(String cacheNameWithPrefix, int partitionId)
public void reset()
ManagedServicereset in interface ManagedServicepublic void shutdown(boolean terminate)
ManagedServiceshutdown in interface ManagedServiceterminate - true to shut down the ManagedServicepublic DistributedObject createDistributedObject(String cacheNameWithPrefix)
RemoteServicecreateDistributedObject in interface RemoteServicecacheNameWithPrefix - the name for the created distributed objectpublic void destroyDistributedObject(String objectName)
RemoteServicedestroyDistributedObject in interface RemoteServiceobjectName - the name of the distributed object to destroypublic void beforeMigration(PartitionMigrationEvent event)
MigrationAwareServiceService can take actions required before migration. Migration process will block until this method returns. If this method fails by throwing an exception, migration process for specific partition will fail and will be rolled back.
beforeMigration in interface MigrationAwareServiceevent - migration eventpublic void commitMigration(PartitionMigrationEvent event)
MigrationAwareServiceCommit is not expected to fail at this point, all exceptions will be suppressed and logged. Implementations of this method must be thread safe as this method may be called concurrently for different migrations on different partitions.
commitMigration in interface MigrationAwareServiceevent - migration eventpublic void rollbackMigration(PartitionMigrationEvent event)
MigrationAwareServiceRollback is not expected to fail at this point, all exceptions will be suppressed and logged. Implementations of this method must be thread safe as this method may be called concurrently for different migrations on different partitions.
rollbackMigration in interface MigrationAwareServiceevent - migration eventpublic ICacheRecordStore getOrCreateRecordStore(String cacheNameWithPrefix, int partitionId)
ICacheServicecacheNameWithPrefix
and partition ID.getOrCreateRecordStore in interface ICacheServicecacheNameWithPrefix - the full name of the ICache, including the manager scope prefixpartitionId - the record store partition IDpublic ICacheRecordStore getRecordStore(String cacheNameWithPrefix, int partitionId)
ICacheServicecacheNameWithPrefix and partition ID
or null if one doesn't exist.getRecordStore in interface ICacheServicecacheNameWithPrefix - the full name of the ICache, including the manager scope prefixpartitionId - the record store partition IDnull if it doesn't existpublic CachePartitionSegment getSegment(int partitionId)
getSegment in interface ICacheServiceprotected void destroySegments(CacheConfig cacheConfig)
protected void closeSegments(String name)
public void deleteCache(String cacheNameWithPrefix, String callerUuid, boolean destroy)
deleteCache in interface ICacheServicepublic CacheConfig putCacheConfigIfAbsent(CacheConfig config)
putCacheConfigIfAbsent in interface ICacheServicepublic CacheConfig deleteCacheConfig(String cacheNameWithPrefix)
deleteCacheConfig in interface ICacheServicepublic CacheStatisticsImpl createCacheStatIfAbsent(String cacheNameWithPrefix)
createCacheStatIfAbsent in interface ICacheServicepublic CacheContext getCacheContext(String name)
public CacheContext getOrCreateCacheContext(String cacheNameWithPrefix)
getOrCreateCacheContext in interface ICacheServicepublic void deleteCacheStat(String cacheNameWithPrefix)
deleteCacheStat in interface ICacheServicepublic void setStatisticsEnabled(CacheConfig cacheConfig, String cacheNameWithPrefix, boolean enabled)
setStatisticsEnabled in interface ICacheServicepublic void setManagementEnabled(CacheConfig cacheConfig, String cacheNameWithPrefix, boolean enabled)
setManagementEnabled in interface ICacheServicepublic CacheConfig getCacheConfig(String cacheNameWithPrefix)
getCacheConfig in interface ICacheServicepublic CacheConfig findCacheConfig(String simpleName)
findCacheConfig in interface ICacheServicepublic Collection<CacheConfig> getCacheConfigs()
getCacheConfigs in interface ICacheServicepublic void publishEvent(CacheEventContext cacheEventContext)
publishEvent in interface ICacheServicepublic void publishEvent(String cacheNameWithPrefix, CacheEventSet eventSet, int orderKey)
publishEvent in interface ICacheServicepublic NodeEngine getNodeEngine()
getNodeEngine in interface ICacheServicepublic void dispatchEvent(Object event, CacheEventListener listener)
EventPublishingServicedispatchEvent in interface EventPublishingService<Object,CacheEventListener>event - the published eventlistener - the listener registered for this eventpublic String registerListener(String cacheNameWithPrefix, CacheEventListener listener, boolean isLocal)
registerListener in interface ICacheServicepublic String registerListener(String cacheNameWithPrefix, CacheEventListener listener, EventFilter eventFilter, boolean isLocal)
registerListener in interface ICacheServiceprotected String registerListenerInternal(String cacheNameWithPrefix, CacheEventListener listener, EventFilter eventFilter, boolean isLocal)
public boolean deregisterListener(String cacheNameWithPrefix, String registrationId)
deregisterListener in interface ICacheServicepublic void deregisterAllListener(String cacheNameWithPrefix)
deregisterAllListener in interface ICacheServicepublic CacheStatisticsImpl getStatistics(String cacheNameWithPrefix)
getStatistics in interface ICacheServicepublic CacheOperationProvider getCacheOperationProvider(String cacheNameWithPrefix, InMemoryFormat inMemoryFormat)
ICacheServicegetCacheOperationProvider in interface ICacheServiceprotected abstract CacheOperationProvider createOperationProvider(String nameWithPrefix, InMemoryFormat inMemoryFormat)
protected void deleteCacheResources(String name)
public Operation getPreJoinOperation()
PreJoinAwareServicePostJoinAwareService.getPostJoinOperation()s, no partition locks, no key-based locks, no service level
locks, no database interaction are allowed. Additionally, a pre-join operation is executed while the cluster
lock is being held on the joining member, so it is important that the operation finishes quickly and does not
interact with other locks.
The Operation.getPartitionId() method should return a negative value.
This means that the operations should not implement PartitionAwareOperation.
Pre join operations should return response, which may also be a null response.
getPreJoinOperation in interface PreJoinAwareServicenull.public Operation getPostJoinOperation()
PostJoinAwareServiceOperation.getPartitionId() method should return a negative value.
This means that the operations should not implement PartitionAwareOperation.
Post join operations should return response, at least a null response.
getPostJoinOperation in interface PostJoinAwareServicenull.protected void publishCachePartitionLostEvent(String cacheName, int partitionId)
public void onPartitionLost(IPartitionLostEvent partitionLostEvent)
PartitionAwareServiceonPartitionLost in interface PartitionAwareServicepartitionLostEvent - The event object that contains the partition ID and the number of replicas that is lostpublic void cacheEntryListenerRegistered(String name, javax.cache.configuration.CacheEntryListenerConfiguration cacheEntryListenerConfiguration)
public void cacheEntryListenerDeregistered(String name, javax.cache.configuration.CacheEntryListenerConfiguration cacheEntryListenerConfiguration)
public String getQuorumName(String cacheName)
getQuorumName in interface QuorumAwareServicecacheName - name of the cachepublic String addInvalidationListener(String cacheNameWithPrefix, CacheEventListener listener, boolean localOnly)
CacheEventListener for specified cacheNameWithPrefixaddInvalidationListener in interface ICacheServicecacheNameWithPrefix - the full name of the cache (including manager scope prefix)
that CacheEventListener will be registered forlistener - the CacheEventListener to be registered
for specified cacheNameWithPrefixlocalOnly - true if only events originated from this member wants be listened, false if all
invalidation events in the cluster wants to be listenedpublic void sendInvalidationEvent(String cacheNameWithPrefix, Data key, String sourceUuid)
cacheName with specified key
from mentioned source with sourceUuid.sendInvalidationEvent in interface ICacheServicecacheNameWithPrefix - the name of the cache that invalidation event is sent forkey - the Data represents the invalidation eventsourceUuid - an ID that represents the source for invalidation eventpublic Runnable prepareMergeRunnable()
SplitBrainHandlerServiceprepareMergeRunnable in interface SplitBrainHandlerServicepublic CacheEventHandler getCacheEventHandler()
public CacheEventJournal getEventJournal()
ICacheServicegetEventJournal in interface ICacheServiceCopyright © 2017 Hazelcast, Inc.. All Rights Reserved.