Class GridDiscoveryManager
- java.lang.Object
-
- org.apache.ignite.internal.managers.GridManagerAdapter<DiscoverySpi>
-
- org.apache.ignite.internal.managers.discovery.GridDiscoveryManager
-
- All Implemented Interfaces:
GridComponent,GridManager
public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi>
Discovery SPI manager.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.ignite.internal.GridComponent
GridComponent.DiscoveryDataExchangeType
-
-
Field Summary
Fields Modifier and Type Field Description static intDFLT_DISCOVERY_HISTORY_SIZEstatic StringDISCO_METRICSName of the discovery metrics registry.static StringNODE_ATTRIBUTES_SYS_VIEWstatic StringNODE_ATTRIBUTES_SYS_VIEW_DESCstatic StringNODE_METRICS_SYS_VIEWstatic StringNODE_METRICS_SYS_VIEW_DESCstatic StringNODES_SYS_VIEWstatic StringNODES_SYS_VIEW_DESC-
Fields inherited from class org.apache.ignite.internal.managers.GridManagerAdapter
ctx, log
-
-
Constructor Summary
Constructors Constructor Description GridDiscoveryManager(GridKernalContext ctx)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidackTopology(long topVer, int evtType, ClusterNode evtNode)Prints the latest topology info into log taking into account logging/verbosity settings.voidaddCacheGroup(CacheGroupDescriptor grpDesc, IgnitePredicate<ClusterNode> filter, CacheMode cacheMode)booleanaddClientNode(String cacheName, UUID clientNodeId, boolean nearEnabled)Adds near node ID to cache filter.voidaddLocalNodeInitializedEventListener(IgniteInClosure<ClusterNode> lsnr)Adds a listener for local node initialized event.booleanalive(UUID nodeId)booleanalive(ClusterNode node)booleanaliveAll(@Nullable Collection<UUID> nodeIds)Collection<ClusterNode>aliveServerNodes()Collection<ClusterNode>allNodes()@Nullable List<? extends BaselineNode>baselineNodes(AffinityTopologyVersion topVer)booleancacheAffinityNode(ClusterNode node, String cacheName)Checks if node is a data node for the given cache.booleancacheClientNode(ClusterNode node, String cacheName)booleancacheGroupAffinityNode(ClusterNode node, int grpId)Checks if node is a data node for the given cache group.Collection<ClusterNode>cacheGroupAffinityNodes(int grpId, AffinityTopologyVersion topVer)Gets cache nodes for cache with given ID that participate in affinity calculation.booleancacheNearNode(ClusterNode node, String cacheName)booleancacheNode(ClusterNode node, String cacheName)List<ClusterNode>cacheNodes(@Nullable String cacheName, AffinityTopologyVersion topVer)Gets cache nodes for cache with given name.voidcleanCachesAndGroups()voidclientCacheStartEvent(UUID reqId, @Nullable Map<String,DynamicCacheChangeRequest> startReqs, @Nullable Set<String> cachesToClose)Map<String,Map<UUID,Boolean>>clientNodesMap()Called from discovery thread.booleancommunicationErrorResolveSupported()SerializableconsistentId()Deprecated.UseClusterNode.consistentId()of local node to get actual consistent ID.voidconsistentId(Serializable consistentId)Sets TCP local node consistent ID.Map<UUID,Short>consistentId(AffinityTopologyVersion topVer)Gets consistentId from history for given topology version.DiscoCachecreateDiscoCacheOnCacheChange(AffinityTopologyVersion topVer, DiscoCache discoCache)Creates discovery cache afterDynamicCacheChangeBatchreceived.DiscoveryMetricsProvidercreateMetricsProvider()DiscoCachediscoCache()Gets discovery collection cache from SPI safely guarding against "floating" collections.DiscoCachediscoCache(AffinityTopologyVersion topVer)Gets discovery collection cache from SPI safely guarding against "floating" collections.voidfailNode(UUID nodeId, @Nullable String warning)@Nullable ClusterNodegetAlive(UUID nodeId)DiscoverySpigetInjectedDiscoverySpi()Performs injection of discovery SPI if needed, then provides DiscoverySpi SPI.longgridStartTime()Gets first grid node start time, seeDiscoverySpi.getGridStartTime().ClusterNodehistoricalNode(UUID nodeId)Resolves by ID cluster node which is alive or has recently left the cluster.static voidinitCommunicationErrorResolveConfiguration(IgniteConfiguration cfg)DiscoveryLocalJoinDatalocalJoin()DiscoveryEventlocalJoinEvent()GridFutureAdapter<DiscoveryLocalJoinData>localJoinFuture()ClusterNodelocalNode()voidmetricsUpdateEvent(DiscoCache discoCache, ClusterNode node)Adds metrics update event to discovery worker queue.booleanmutableCustomMessages()@Nullable ClusterNodenode(UUID nodeId)ClusterNodenode(AffinityTopologyVersion topVer, UUID id)Gets node from history for given topology version.Map<Short,UUID>nodeIdMap(AffinityTopologyVersion topVer)Gets consistentId from history for given topology version.Map<String,CacheConfiguration>nodePublicCaches(ClusterNode node)Collection<ClusterNode>nodes(long topVer)Gets all nodes for given topology version.Collection<ClusterNode>nodes(@Nullable Collection<UUID> ids, IgnitePredicate<UUID>... p)Gets collection of node for given node IDs and predicates.Collection<ClusterNode>nodes(AffinityTopologyVersion topVer)Gets all nodes for given topology version.@Nullable ClusterNodeoldestAliveServerNode(AffinityTopologyVersion topVer)voidonBeforeSpiStart()This method executed before manager will start SPI.booleanonClientCacheClose(String cacheName, UUID clientNodeId)Called from discovery thread.protected voidonKernalStart0()voidonKernalStop0(boolean cancel)booleanpingNode(UUID nodeId)booleanpingNodeNoError(UUID nodeId)voidreconnect()Leave cluster and try to join again.booleanreconnectSupported()Collection<ClusterNode>remoteAliveNodesWithCaches(AffinityTopologyVersion topVer)Gets cache remote nodes for cache with given name.Collection<ClusterNode>remoteNodes()voidremoveCacheFilter(String cacheName)Called from discovery thread.voidremoveCacheGroup(CacheGroupDescriptor grpDesc)voidresolveCommunicationError(ClusterNode node, Exception err)voidsendCustomEvent(DiscoveryCustomMessage msg)List<ClusterNode>serverNodes(AffinityTopologyVersion topVer)Collection<ClusterNode>serverTopologyNodes(long topVer)Gets server nodes topology by specified version from snapshots history storage.voidsetCacheFilter(int cacheId, int grpId, String cacheName, boolean nearEnabled)Called from discovery thread.<T extends DiscoveryCustomMessage>
voidsetCustomEventListener(Class<T> msgCls, CustomEventListener<T> lsnr)intsize()voidstart()Starts grid component.voidstop(boolean cancel)Stops grid component.@Nullable Collection<ClusterNode>topology(long topVer)Gets topology by specified version from history storage.IgniteInternalFuture<Long>topologyFuture(long awaitVer)Gets future that will be completed when current topology version becomes greater or equal to argument passed.longtopologyVersion()AffinityTopologyVersiontopologyVersionEx()booleantryFailNode(UUID nodeId, @Nullable String warning)-
Methods inherited from class org.apache.ignite.internal.managers.GridManagerAdapter
assertParameter, collectGridNodeData, collectJoiningNodeData, discoveryDataType, enabled, getSpi, getSpi, getSpis, inject, onAfterSpiStart, onDisconnected, onGridDataReceived, onJoiningNodeDataReceived, onKernalStart, onKernalStop, onReconnected, printMemoryStats, startInfo, startSpi, stopInfo, stopSpi, toString, validateNode, validateNode
-
-
-
-
Field Detail
-
NODES_SYS_VIEW
public static final String NODES_SYS_VIEW
- See Also:
- Constant Field Values
-
NODES_SYS_VIEW_DESC
public static final String NODES_SYS_VIEW_DESC
- See Also:
- Constant Field Values
-
NODE_ATTRIBUTES_SYS_VIEW
public static final String NODE_ATTRIBUTES_SYS_VIEW
-
NODE_ATTRIBUTES_SYS_VIEW_DESC
public static final String NODE_ATTRIBUTES_SYS_VIEW_DESC
- See Also:
- Constant Field Values
-
NODE_METRICS_SYS_VIEW
public static final String NODE_METRICS_SYS_VIEW
-
NODE_METRICS_SYS_VIEW_DESC
public static final String NODE_METRICS_SYS_VIEW_DESC
- See Also:
- Constant Field Values
-
DFLT_DISCOVERY_HISTORY_SIZE
public static final int DFLT_DISCOVERY_HISTORY_SIZE
-
DISCO_METRICS
public static final String DISCO_METRICS
Name of the discovery metrics registry.
-
-
Constructor Detail
-
GridDiscoveryManager
public GridDiscoveryManager(GridKernalContext ctx)
- Parameters:
ctx- Context.
-
-
Method Detail
-
onBeforeSpiStart
public void onBeforeSpiStart()
This method executed before manager will start SPI.- Specified by:
onBeforeSpiStartin interfaceGridManager- Overrides:
onBeforeSpiStartin classGridManagerAdapter<DiscoverySpi>
-
cleanCachesAndGroups
public void cleanCachesAndGroups()
-
addCacheGroup
public void addCacheGroup(CacheGroupDescriptor grpDesc, IgnitePredicate<ClusterNode> filter, CacheMode cacheMode)
- Parameters:
grpDesc- Cache group descriptor.filter- Node filter.cacheMode- Cache mode.
-
removeCacheGroup
public void removeCacheGroup(CacheGroupDescriptor grpDesc)
- Parameters:
grpDesc- Cache group descriptor.
-
setCacheFilter
public void setCacheFilter(int cacheId, int grpId, String cacheName, boolean nearEnabled)Called from discovery thread. Adds dynamic cache filter.- Parameters:
cacheId- Cache ID.grpId- Cache group ID.cacheName- Cache name.nearEnabled- Near enabled flag.
-
removeCacheFilter
public void removeCacheFilter(String cacheName)
Called from discovery thread. Removes dynamic cache filter.- Parameters:
cacheName- Cache name.
-
addClientNode
public boolean addClientNode(String cacheName, UUID clientNodeId, boolean nearEnabled)
Adds near node ID to cache filter.- Parameters:
cacheName- Cache name.clientNodeId- Near node ID.nearEnabled- Near enabled flag.- Returns:
Trueif new node ID was added.
-
onClientCacheClose
public boolean onClientCacheClose(String cacheName, UUID clientNodeId)
Called from discovery thread. Removes near node ID from cache filter.- Parameters:
cacheName- Cache name.clientNodeId- Near node ID.- Returns:
Trueif existing node ID was removed.
-
clientNodesMap
public Map<String,Map<UUID,Boolean>> clientNodesMap()
Called from discovery thread.- Returns:
- Client nodes map.
-
onKernalStart0
protected void onKernalStart0() throws IgniteCheckedException- Overrides:
onKernalStart0in classGridManagerAdapter<DiscoverySpi>- Throws:
IgniteCheckedException- If failed.
-
start
public void start() throws IgniteCheckedExceptionStarts grid component.- Throws:
IgniteCheckedException- Throws in case of any errors.
-
setCustomEventListener
public <T extends DiscoveryCustomMessage> void setCustomEventListener(Class<T> msgCls, CustomEventListener<T> lsnr)
- Parameters:
msgCls- Message class.lsnr- Custom event listener.
-
addLocalNodeInitializedEventListener
public void addLocalNodeInitializedEventListener(IgniteInClosure<ClusterNode> lsnr)
Adds a listener for local node initialized event.- Parameters:
lsnr- Listener to add.
-
createMetricsProvider
public DiscoveryMetricsProvider createMetricsProvider()
- Returns:
- Metrics provider.
-
ackTopology
public void ackTopology(long topVer, int evtType, ClusterNode evtNode)Prints the latest topology info into log taking into account logging/verbosity settings.- Parameters:
topVer- Topology version.evtType- Event type.evtNode- Event node.
-
onKernalStop0
public void onKernalStop0(boolean cancel)
- Overrides:
onKernalStop0in classGridManagerAdapter<DiscoverySpi>- Parameters:
cancel- Cancel flag.
-
stop
public void stop(boolean cancel) throws IgniteCheckedExceptionStops grid component.- Parameters:
cancel- Iftrue, then all ongoing tasks or jobs for relevant components need to be cancelled.- Throws:
IgniteCheckedException- Thrown in case of any errors.
-
aliveAll
public boolean aliveAll(@Nullable @Nullable Collection<UUID> nodeIds)- Parameters:
nodeIds- Node IDs to check.- Returns:
Trueif at least one ID belongs to an alive node.
-
alive
public boolean alive(UUID nodeId)
- Parameters:
nodeId- Node ID.- Returns:
Trueif node for given ID is alive.
-
getAlive
@Nullable public @Nullable ClusterNode getAlive(UUID nodeId)
- Parameters:
nodeId- Node ID.- Returns:
- Node if node is alive.
-
alive
public boolean alive(ClusterNode node)
- Parameters:
node- Node.- Returns:
Trueif node is alive.
-
pingNode
public boolean pingNode(UUID nodeId) throws IgniteClientDisconnectedCheckedException
- Parameters:
nodeId- ID of the node.- Returns:
Trueif ping succeeded.- Throws:
IgniteClientDisconnectedCheckedException- If ping failed.
-
pingNodeNoError
public boolean pingNodeNoError(UUID nodeId)
- Parameters:
nodeId- ID of the node.- Returns:
Trueif ping succeeded.
-
node
@Nullable public @Nullable ClusterNode node(UUID nodeId)
- Parameters:
nodeId- ID of the node.- Returns:
- Node for ID.
-
nodes
public Collection<ClusterNode> nodes(@Nullable @Nullable Collection<UUID> ids, IgnitePredicate<UUID>... p)
Gets collection of node for given node IDs and predicates.- Parameters:
ids- Ids to include.p- Filter for IDs.- Returns:
- Collection with all alive nodes for given IDs.
-
topologyFuture
public IgniteInternalFuture<Long> topologyFuture(long awaitVer)
Gets future that will be completed when current topology version becomes greater or equal to argument passed.- Parameters:
awaitVer- Topology version to await.- Returns:
- Future.
-
discoCache
public DiscoCache discoCache()
Gets discovery collection cache from SPI safely guarding against "floating" collections.- Returns:
- Discovery collection cache.
-
discoCache
public DiscoCache discoCache(AffinityTopologyVersion topVer)
Gets discovery collection cache from SPI safely guarding against "floating" collections.- Returns:
- Discovery collection cache.
-
remoteNodes
public Collection<ClusterNode> remoteNodes()
- Returns:
- All remote nodes in topology.
-
allNodes
public Collection<ClusterNode> allNodes()
- Returns:
- All nodes in topology.
-
aliveServerNodes
public Collection<ClusterNode> aliveServerNodes()
- Returns:
- all alive server nodes in topology
-
size
public int size()
- Returns:
- Full topology size.
-
nodes
public Collection<ClusterNode> nodes(long topVer)
Gets all nodes for given topology version.- Parameters:
topVer- Topology version.- Returns:
- Collection of cache nodes.
-
nodes
public Collection<ClusterNode> nodes(AffinityTopologyVersion topVer)
Gets all nodes for given topology version.- Parameters:
topVer- Topology version.- Returns:
- Collection of cache nodes.
-
serverNodes
public List<ClusterNode> serverNodes(AffinityTopologyVersion topVer)
- Parameters:
topVer- Topology version.- Returns:
- All server nodes for given topology version.
-
baselineNodes
@Nullable public @Nullable List<? extends BaselineNode> baselineNodes(AffinityTopologyVersion topVer)
- Parameters:
topVer- Topology version.- Returns:
- All baseline nodes for given topology version or
nullif baseline was not set for the given topology version.
-
node
public ClusterNode node(AffinityTopologyVersion topVer, UUID id)
Gets node from history for given topology version.- Parameters:
topVer- Topology version.id- Node ID.- Returns:
- Node.
-
consistentId
public Map<UUID,Short> consistentId(AffinityTopologyVersion topVer)
Gets consistentId from history for given topology version.- Parameters:
topVer- Topology version.- Returns:
- Compacted consistent id.
-
nodeIdMap
public Map<Short,UUID> nodeIdMap(AffinityTopologyVersion topVer)
Gets consistentId from history for given topology version.- Parameters:
topVer- Topology version.- Returns:
- Compacted consistent id map.
-
cacheNodes
public List<ClusterNode> cacheNodes(@Nullable @Nullable String cacheName, AffinityTopologyVersion topVer)
Gets cache nodes for cache with given name.- Parameters:
cacheName- Cache name.topVer- Topology version.- Returns:
- Collection of cache nodes.
-
remoteAliveNodesWithCaches
public Collection<ClusterNode> remoteAliveNodesWithCaches(AffinityTopologyVersion topVer)
Gets cache remote nodes for cache with given name.- Parameters:
topVer- Topology version.- Returns:
- Collection of cache nodes.
-
oldestAliveServerNode
@Nullable public @Nullable ClusterNode oldestAliveServerNode(AffinityTopologyVersion topVer)
- Parameters:
topVer- Topology version (maximum allowed node order).- Returns:
- Oldest alive server nodes with at least one cache configured.
-
cacheGroupAffinityNodes
public Collection<ClusterNode> cacheGroupAffinityNodes(int grpId, AffinityTopologyVersion topVer)
Gets cache nodes for cache with given ID that participate in affinity calculation.- Parameters:
grpId- Cache group ID.topVer- Topology version.- Returns:
- Collection of cache affinity nodes.
-
cacheAffinityNode
public boolean cacheAffinityNode(ClusterNode node, String cacheName)
Checks if node is a data node for the given cache.- Parameters:
node- Node to check.cacheName- Cache name.- Returns:
Trueif node is a cache data node.
-
cacheGroupAffinityNode
public boolean cacheGroupAffinityNode(ClusterNode node, int grpId)
Checks if node is a data node for the given cache group.- Parameters:
node- Node to check.grpId- Cache group ID.- Returns:
Trueif node is a cache data node.
-
cacheNearNode
public boolean cacheNearNode(ClusterNode node, String cacheName)
- Parameters:
node- Node to check.cacheName- Cache name.- Returns:
Trueif node has near cache enabled.
-
cacheClientNode
public boolean cacheClientNode(ClusterNode node, String cacheName)
- Parameters:
node- Node to check.cacheName- Cache name.- Returns:
Trueif node has client cache (without near cache).
-
cacheNode
public boolean cacheNode(ClusterNode node, String cacheName)
- Parameters:
node- Node to check.cacheName- Cache name.- Returns:
- If cache with the given name is accessible on the given node.
-
nodePublicCaches
public Map<String,CacheConfiguration> nodePublicCaches(ClusterNode node)
- Parameters:
node- Node to check.- Returns:
- Public cache names accessible on the given node.
-
topology
@Nullable public @Nullable Collection<ClusterNode> topology(long topVer)
Gets topology by specified version from history storage.- Parameters:
topVer- Topology version.- Returns:
- Topology nodes or
nullif there are no nodes for passed in version.
-
serverTopologyNodes
public Collection<ClusterNode> serverTopologyNodes(long topVer)
Gets server nodes topology by specified version from snapshots history storage.- Parameters:
topVer- Topology version.- Returns:
- Server topology nodes.
-
localNode
public ClusterNode localNode()
- Returns:
- Local node.
-
consistentId
@Deprecated public Serializable consistentId()
Deprecated.UseClusterNode.consistentId()of local node to get actual consistent ID.- Returns:
- Consistent ID.
-
getInjectedDiscoverySpi
public DiscoverySpi getInjectedDiscoverySpi()
Performs injection of discovery SPI if needed, then provides DiscoverySpi SPI. Manual injection is required because normal startup of SPI is done after processor started.- Returns:
- Wrapped DiscoverySpi SPI.
-
consistentId
public void consistentId(Serializable consistentId)
Sets TCP local node consistent ID. This setter is to be called before node init in SPI- Parameters:
consistentId- New value of consistent ID to be used in local node initialization
-
topologyVersion
public long topologyVersion()
- Returns:
- Topology version.
-
topologyVersionEx
public AffinityTopologyVersion topologyVersionEx()
- Returns:
- Topology version.
-
localJoinEvent
public DiscoveryEvent localJoinEvent()
- Returns:
- Event that represents a local node joined to topology.
-
localJoin
public DiscoveryLocalJoinData localJoin()
- Returns:
- Tuple that consists of a local join event and discovery cache at the join time.
-
localJoinFuture
public GridFutureAdapter<DiscoveryLocalJoinData> localJoinFuture()
- Returns:
- Local join future.
-
sendCustomEvent
public void sendCustomEvent(DiscoveryCustomMessage msg) throws IgniteCheckedException
- Parameters:
msg- Custom message.- Throws:
IgniteCheckedException- If failed.
-
clientCacheStartEvent
public void clientCacheStartEvent(UUID reqId, @Nullable @Nullable Map<String,DynamicCacheChangeRequest> startReqs, @Nullable @Nullable Set<String> cachesToClose)
- Parameters:
reqId- Start request ID.startReqs- Cache start requests.cachesToClose- Cache to close.
-
metricsUpdateEvent
public void metricsUpdateEvent(DiscoCache discoCache, ClusterNode node)
Adds metrics update event to discovery worker queue.- Parameters:
discoCache- Discovery cache.node- Event node.
-
gridStartTime
public long gridStartTime()
Gets first grid node start time, seeDiscoverySpi.getGridStartTime().- Returns:
- Start time of the first grid node.
-
tryFailNode
public boolean tryFailNode(UUID nodeId, @Nullable @Nullable String warning)
- Parameters:
nodeId- Node ID.warning- Warning message to be shown on all nodes.- Returns:
- Whether node is failed.
-
failNode
public void failNode(UUID nodeId, @Nullable @Nullable String warning)
- Parameters:
nodeId- Node ID to fail.warning- Warning message to be shown on all nodes.
-
reconnectSupported
public boolean reconnectSupported()
- Returns:
Trueif local node client and discovery SPI supports reconnect.
-
reconnect
public void reconnect()
Leave cluster and try to join again.- Throws:
IgniteSpiException- If failed.
-
initCommunicationErrorResolveConfiguration
public static void initCommunicationErrorResolveConfiguration(IgniteConfiguration cfg) throws IgniteCheckedException
- Parameters:
cfg- Configuration.- Throws:
IgniteCheckedException- If configuration is not valid.
-
communicationErrorResolveSupported
public boolean communicationErrorResolveSupported()
- Returns:
Trueif communication error resolve is supported.
-
mutableCustomMessages
public boolean mutableCustomMessages()
- Returns:
Trueif configuredDiscoverySpisupports mutable custom messages.
-
resolveCommunicationError
public void resolveCommunicationError(ClusterNode node, Exception err)
- Parameters:
node- Problem node.err- Error.
-
historicalNode
public ClusterNode historicalNode(UUID nodeId)
Resolves by ID cluster node which is alive or has recently left the cluster.- Parameters:
nodeId- Node id.- Returns:
- resolved node, or
nullif node not found.
-
createDiscoCacheOnCacheChange
public DiscoCache createDiscoCacheOnCacheChange(AffinityTopologyVersion topVer, DiscoCache discoCache)
Creates discovery cache afterDynamicCacheChangeBatchreceived.- Parameters:
topVer- Topology version.discoCache- Current disco cache.- Returns:
- New discovery cache.
-
-