Interface IgniteCluster
-
- All Superinterfaces:
ClusterGroup
,IgniteAsyncSupport
public interface IgniteCluster extends ClusterGroup, IgniteAsyncSupport
Represents whole cluster (all available nodes) and also provides a handle onnodeLocalMap()
which provides map-like functionality linked to current grid node. Node-local map is useful for saving shared state between job executions on the grid. Additionally you can also ping, start, and restart remote nodes, map keys to caching nodes, and get other useful information about topology.
-
-
Field Summary
Fields Modifier and Type Field Description static int
MAX_TAG_LENGTH
Maximum length oftag()
tag.
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description boolean
active()
Deprecated.Usestate()
instead.void
active(boolean active)
Deprecated.Usestate(ClusterState)
instead.void
baselineAutoAdjustEnabled(boolean baselineAutoAdjustEnabled)
org.apache.ignite.internal.processors.cluster.baseline.autoadjust.BaselineAutoAdjustStatus
baselineAutoAdjustStatus()
long
baselineAutoAdjustTimeout()
void
baselineAutoAdjustTimeout(long baselineAutoAdjustTimeout)
void
clearStatistics(Collection<String> caches)
Clear statistics for caches cluster wide.@Nullable IgniteFuture<?>
clientReconnectFuture()
If local client node disconnected from cluster returns future that will be completed when client reconnected.@Nullable Collection<BaselineNode>
currentBaselineTopology()
Gets current baseline topology.boolean
disableWal(String cacheName)
Disables write-ahead logging for specified cache.void
enableStatistics(Collection<String> caches, boolean enabled)
Enables/disables statistics for caches cluster wide.boolean
enableWal(String cacheName)
Enables write-ahead logging for specified cache.ClusterGroup
forLocal()
Gets a cluster group consisting from the local node.UUID
id()
Cluster ID is a unique identifier automatically generated when cluster starts up for the very first time.boolean
isBaselineAutoAdjustEnabled()
boolean
isWalEnabled(String cacheName)
Checks if write-ahead logging is enabled for specified cache.ClusterNode
localNode()
Gets local grid node.<K,V>
ConcurrentMap<K,V>nodeLocalMap()
Gets node-local storage instance.boolean
pingNode(UUID nodeId)
Pings a remote node.void
resetMetrics()
Resets local I/O, job, and task execution metrics.void
restartNodes()
Restarts nodes satisfying optional set of predicates.void
restartNodes(Collection<UUID> ids)
Restarts nodes defined by provided IDs.void
setBaselineTopology(long topVer)
Sets baseline topology constructed from the cluster topology of the given version (the method succeeds only if the cluster topology has not changed).void
setBaselineTopology(Collection<? extends BaselineNode> baselineTop)
Sets baseline topology.void
setTxTimeoutOnPartitionMapExchange(long timeout)
Sets transaction timeout on partition map exchange.ShutdownPolicy
shutdownPolicy()
Returns a policy of shutdown or default valueIgniteConfiguration.DFLT_SHUTDOWN_POLICY
if the property is not set.void
shutdownPolicy(ShutdownPolicy shutdownPolicy)
Sets a shutdown policy on a cluster.Collection<ClusterStartNodeResult>
startNodes(File file, boolean restart, int timeout, int maxConn)
Starts one or more nodes on remote host(s).Collection<ClusterStartNodeResult>
startNodes(Collection<Map<String,Object>> hosts, @Nullable Map<String,Object> dflts, boolean restart, int timeout, int maxConn)
Starts one or more nodes on remote host(s).IgniteFuture<Collection<ClusterStartNodeResult>>
startNodesAsync(File file, boolean restart, int timeout, int maxConn)
Starts one or more nodes on remote host(s) asynchronously.IgniteFuture<Collection<ClusterStartNodeResult>>
startNodesAsync(Collection<Map<String,Object>> hosts, @Nullable Map<String,Object> dflts, boolean restart, int timeout, int maxConn)
Starts one or more nodes on remote host(s) asynchronously.ClusterState
state()
Gets current cluster state.void
state(ClusterState newState)
Changes current cluster state to givennewState
cluster state.void
stopNodes()
Stops nodes satisfying optional set of predicates.void
stopNodes(Collection<UUID> ids)
Stops nodes defined by provided IDs.String
tag()
User-defined tag describing the cluster.void
tag(String tag)
Enables user to add a specific label to the cluster e.g. to describe purpose of the cluster or any its characteristics.Collection<ClusterNode>
topology(long topVer)
Gets a topology by version.long
topologyVersion()
Gets current topology version.IgniteCluster
withAsync()
Deprecated.-
Methods inherited from interface org.apache.ignite.cluster.ClusterGroup
forAttribute, forCacheNodes, forClientNodes, forClients, forDataNodes, forHost, forHost, forNode, forNodeId, forNodeIds, forNodes, forOldest, forOthers, forOthers, forPredicate, forRandom, forRemotes, forServers, forYoungest, hostNames, ignite, metrics, node, node, nodes, predicate
-
Methods inherited from interface org.apache.ignite.lang.IgniteAsyncSupport
future, isAsync
-
-
-
-
Field Detail
-
MAX_TAG_LENGTH
static final int MAX_TAG_LENGTH
Maximum length oftag()
tag.- See Also:
- Constant Field Values
-
-
Method Detail
-
localNode
ClusterNode localNode()
Gets local grid node.- Returns:
- Local grid node.
-
forLocal
ClusterGroup forLocal()
Gets a cluster group consisting from the local node.- Returns:
- Cluster group consisting from the local node.
-
nodeLocalMap
<K,V> ConcurrentMap<K,V> nodeLocalMap()
Gets node-local storage instance.Node-local values are similar to thread locals in a way that these values are not distributed and kept only on local node (similar like thread local values are attached to the current thread only). Node-local values are used primarily by closures executed from the remote nodes to keep intermediate state on the local node between executions.
There's only one instance of node local storage per local node. Node local storage is based on
ConcurrentMap
and is safe for multi-threaded access.- Type Parameters:
K
- Type of keys in the node local map.V
- Type of mapped values in the node local map.- Returns:
- Node local storage instance for the local node.
-
pingNode
boolean pingNode(UUID nodeId)
Pings a remote node.Discovery SPIs usually have some latency in discovering failed nodes. Hence, communication to remote nodes may fail at times if an attempt was made to establish communication with a failed node. This method can be used to check if communication has failed due to node failure or due to some other reason.
- Parameters:
nodeId
- ID of a node to ping.- Returns:
true
if node for a given ID is alive,false
otherwise.- See Also:
DiscoverySpi
-
topologyVersion
long topologyVersion()
Gets current topology version. In case of TCP discovery (seeTcpDiscoverySpi
) topology versions are sequential - they start from'1'
and get incremented every time whenever a node joins or leaves. For other discovery SPIs topology versions may not be (and likely are not) sequential.- Returns:
- Current topology version.
-
topology
Collection<ClusterNode> topology(long topVer) throws UnsupportedOperationException
Gets a topology by version. Returnsnull
if topology history storage doesn't contain specified topology version (history currently keeps last1000
snapshots).- Parameters:
topVer
- Topology version.- Returns:
- Collection of grid nodes which represented by specified topology version,
if it is present in history storage,
null
otherwise. - Throws:
UnsupportedOperationException
- If underlying SPI implementation does not support topology history. Currently onlyTcpDiscoverySpi
supports topology history.
-
startNodes
@IgniteAsyncSupported Collection<ClusterStartNodeResult> startNodes(File file, boolean restart, int timeout, int maxConn) throws IgniteException
Starts one or more nodes on remote host(s).This method takes INI file which defines all startup parameters. It can contain one or more sections, each for a host or for range of hosts (note that they must have different names) and a special '
defaults
' section with default values. They are applied to undefined parameters in host's sections.Returned result is collection of tuples. Each tuple corresponds to one node start attempt and contains hostname, success flag and error message if attempt was not successful. Note that successful attempt doesn't mean that node was actually started and joined topology. For large topologies (> 100s nodes) it can take over 10 minutes for all nodes to start. See individual node logs for details.
Supports asynchronous execution (see
IgniteAsyncSupport
).- Parameters:
file
- Configuration file.restart
- Whether to stop existing nodes. Iftrue
, all existing nodes on the host will be stopped before starting new ones. Iffalse
, nodes will be started only if there are less nodes on the host than expected.timeout
- Connection timeout.maxConn
- Number of parallel SSH connections to one host.- Returns:
- Collection of start node results, each containing host name, result (success or failure) and error message (if any).
- Throws:
IgniteException
- In case of error.
-
startNodesAsync
IgniteFuture<Collection<ClusterStartNodeResult>> startNodesAsync(File file, boolean restart, int timeout, int maxConn) throws IgniteException
Starts one or more nodes on remote host(s) asynchronously.This method takes INI file which defines all startup parameters. It can contain one or more sections, each for a host or for range of hosts (note that they must have different names) and a special '
defaults
' section with default values. They are applied to undefined parameters in host's sections.Completed future contains collection of tuples. Each tuple corresponds to one node start attempt and contains hostname, success flag and error message if attempt was not successful. Note that successful attempt doesn't mean that node was actually started and joined topology. For large topologies (> 100s nodes) it can take over 10 minutes for all nodes to start. See individual node logs for details.
- Parameters:
file
- Configuration file.restart
- Whether to stop existing nodes. Iftrue
, all existing nodes on the host will be stopped before starting new ones. Iffalse
, nodes will be started only if there are less nodes on the host than expected.timeout
- Connection timeout.maxConn
- Number of parallel SSH connections to one host.- Returns:
- a Future representing pending completion of the starting nodes.
- Throws:
IgniteException
- In case of error.
-
startNodes
@IgniteAsyncSupported Collection<ClusterStartNodeResult> startNodes(Collection<Map<String,Object>> hosts, @Nullable @Nullable Map<String,Object> dflts, boolean restart, int timeout, int maxConn) throws IgniteException
Starts one or more nodes on remote host(s).Each map in
hosts
collection defines startup parameters for one host or for a range of hosts. The following parameters are supported:Name Type Description host String Hostname (required). Can define several hosts if their IPs are sequential. E.g., 10.0.0.1~5
defines range of five IP addresses. Other parameters are applied to all hosts equally.port Integer Port number (default is 22
).uname String Username (if not defined, current local username will be used). passwd String Password (if not defined, private key file must be defined). key File Private key file (if not defined, password must be defined). nodes Integer Expected number of nodes on the host. If some nodes are started already, then only remaining nodes will be started. If current count of nodes is equal to this number, and restart
flag isfalse
, then nothing will happen.igniteHome String Path to Ignite installation folder. If not defined, IGNITE_HOME environment variable must be set on remote hosts. cfg String Path to configuration file (relative to igniteHome
).script String Custom startup script file name and path (relative to igniteHome
). You can also specify a space-separated list of parameters in the same string (for example:"bin/my-custom-script.sh -v"
).dflts
map defines default values. They are applied to undefined parameters inhosts
collection.Returned result is collection of tuples. Each tuple corresponds to one node start attempt and contains hostname, success flag and error message if attempt was not successful. Note that successful attempt doesn't mean that node was actually started and joined topology. For large topologies (> 100s nodes) it can take over 10 minutes for all nodes to start. See individual node logs for details.
Supports asynchronous execution (see
IgniteAsyncSupport
).- Parameters:
hosts
- Startup parameters.dflts
- Default values.restart
- Whether to stop existing nodes. Iftrue
, all existing nodes on the host will be stopped before starting new ones. Iffalse
, nodes will be started only if there are less nodes on the host than expected.timeout
- Connection timeout in milliseconds.maxConn
- Number of parallel SSH connections to one host.- Returns:
- Collection of start node results, each containing host name, result (success or failure) and error message (if any).
- Throws:
IgniteException
- In case of error.
-
startNodesAsync
IgniteFuture<Collection<ClusterStartNodeResult>> startNodesAsync(Collection<Map<String,Object>> hosts, @Nullable @Nullable Map<String,Object> dflts, boolean restart, int timeout, int maxConn) throws IgniteException
Starts one or more nodes on remote host(s) asynchronously.Each map in
hosts
collection defines startup parameters for one host or for a range of hosts. The following parameters are supported:Name Type Description host String Hostname (required). Can define several hosts if their IPs are sequential. E.g., 10.0.0.1~5
defines range of five IP addresses. Other parameters are applied to all hosts equally.port Integer Port number (default is 22
).uname String Username (if not defined, current local username will be used). passwd String Password (if not defined, private key file must be defined). key File Private key file (if not defined, password must be defined). nodes Integer Expected number of nodes on the host. If some nodes are started already, then only remaining nodes will be started. If current count of nodes is equal to this number, and restart
flag isfalse
, then nothing will happen.igniteHome String Path to Ignite installation folder. If not defined, IGNITE_HOME environment variable must be set on remote hosts. cfg String Path to configuration file (relative to igniteHome
).script String Custom startup script file name and path (relative to igniteHome
). You can also specify a space-separated list of parameters in the same string (for example:"bin/my-custom-script.sh -v"
).dflts
map defines default values. They are applied to undefined parameters inhosts
collection.Completed future contains collection of tuples. Each tuple corresponds to one node start attempt and contains hostname, success flag and error message if attempt was not successful. Note that successful attempt doesn't mean that node was actually started and joined topology. For large topologies (> 100s nodes) it can take over 10 minutes for all nodes to start. See individual node logs for details.
- Parameters:
hosts
- Startup parameters.dflts
- Default values.restart
- Whether to stop existing nodes. Iftrue
, all existing nodes on the host will be stopped before starting new ones. Iffalse
, nodes will be started only if there are less nodes on the host than expected.timeout
- Connection timeout in milliseconds.maxConn
- Number of parallel SSH connections to one host.- Returns:
- a Future representing pending completion of the starting nodes.
- Throws:
IgniteException
- In case of error.
-
stopNodes
void stopNodes() throws IgniteException
Stops nodes satisfying optional set of predicates.NOTE:
System.exit(Ignition.KILL_EXIT_CODE)
will be executed on each stopping node. If you have other applications running in the same JVM along with Ignition, those applications will be stopped as well.- Throws:
IgniteException
- In case of error.
-
stopNodes
void stopNodes(Collection<UUID> ids) throws IgniteException
Stops nodes defined by provided IDs.NOTE:
System.exit(Ignition.KILL_EXIT_CODE)
will be executed on each stopping node. If you have other applications running in the same JVM along with Ignition, those applications will be stopped as well.- Parameters:
ids
- IDs defining nodes to stop.- Throws:
IgniteException
- In case of error.
-
restartNodes
void restartNodes() throws IgniteException
Restarts nodes satisfying optional set of predicates.NOTE: this command only works for grid nodes started with Ignition
ignite.sh
orignite.bat
scripts.- Throws:
IgniteException
- In case of error.
-
restartNodes
void restartNodes(Collection<UUID> ids) throws IgniteException
Restarts nodes defined by provided IDs.NOTE: this command only works for grid nodes started with Ignition
ignite.sh
orignite.bat
scripts.- Parameters:
ids
- IDs defining nodes to restart.- Throws:
IgniteException
- In case of error.
-
resetMetrics
void resetMetrics()
Resets local I/O, job, and task execution metrics.
-
enableStatistics
void enableStatistics(Collection<String> caches, boolean enabled)
Enables/disables statistics for caches cluster wide.- Parameters:
caches
- Collection of cache names.enabled
- Statistics enabled flag.
-
clearStatistics
void clearStatistics(Collection<String> caches)
Clear statistics for caches cluster wide.- Parameters:
caches
- Collection of cache names.
-
setTxTimeoutOnPartitionMapExchange
void setTxTimeoutOnPartitionMapExchange(long timeout)
Sets transaction timeout on partition map exchange.- Parameters:
timeout
- Transaction timeout on partition map exchange in milliseconds.
-
clientReconnectFuture
@Nullable @Nullable IgniteFuture<?> clientReconnectFuture()
If local client node disconnected from cluster returns future that will be completed when client reconnected.- Returns:
- Future that will be completed when client reconnected.
-
active
@Deprecated boolean active()
Deprecated.Usestate()
instead.Checks Ignite grid is active or not active.- Returns:
True
if grid is active.False
If grid is not active.
-
active
@Deprecated void active(boolean active)
Deprecated.Usestate(ClusterState)
instead.Changes Ignite grid state to active or inactive.NOTE: Deactivation clears in-memory caches (without persistence) including the system caches.
- Parameters:
active
- IfTrue
start activation process. IfFalse
start deactivation process.- Throws:
IgniteException
- If there is an already started transaction or lock in the same thread.
-
state
ClusterState state()
Gets current cluster state.- Returns:
- Current cluster state.
-
state
void state(ClusterState newState) throws IgniteException
Changes current cluster state to givennewState
cluster state.NOTE: Deactivation clears in-memory caches (without persistence) including the system caches.
- Parameters:
newState
- New cluster state.- Throws:
IgniteException
- If there is an already started transaction or lock in the same thread.
-
currentBaselineTopology
@Nullable @Nullable Collection<BaselineNode> currentBaselineTopology()
Gets current baseline topology. If baseline topology was not set, will returnnull
.- Returns:
- Collection of nodes included to the current baseline topology.
-
setBaselineTopology
void setBaselineTopology(Collection<? extends BaselineNode> baselineTop)
Sets baseline topology. The cluster must be activated for this method to be called.- Parameters:
baselineTop
- A collection of nodes to be included to the baseline topology.
-
setBaselineTopology
void setBaselineTopology(long topVer)
Sets baseline topology constructed from the cluster topology of the given version (the method succeeds only if the cluster topology has not changed). All client nodes will be filtered out of the resulting baseline.- Parameters:
topVer
- Topology version to set.
-
withAsync
@Deprecated IgniteCluster withAsync()
Deprecated.Gets instance of this component with asynchronous mode enabled.- Specified by:
withAsync
in interfaceIgniteAsyncSupport
- Returns:
- Instance of this component with asynchronous mode enabled.
-
disableWal
boolean disableWal(String cacheName) throws IgniteException
Disables write-ahead logging for specified cache. When WAL is disabled, changes are not logged to disk. This significantly improves cache update speed. The drawback is absence of local crash-recovery guarantees. If node is crashed, local content of WAL-disabled cache will be cleared on restart to avoid data corruption.Internally this method will wait for all current cache operations to finish and prevent new cache operations from being executed. Then checkpoint is initiated to flush all data to disk. Control is returned to the callee when all dirty pages are prepared for checkpoint, but not necessarily flushed to disk.
WAL state can be changed only for persistent caches.
NOTE: Currently, this method should only be called on a stable topology when no nodes are leaving or joining cluster, and all baseline nodes are present. Cache may be stuck in inconsistent state due to violation of these conditions. It is advised to destroy such cache.
- Parameters:
cacheName
- Cache name.- Returns:
- Whether WAL disabled by this call.
- Throws:
IgniteException
- If error occurs.- See Also:
enableWal(String)
,isWalEnabled(String)
-
enableWal
boolean enableWal(String cacheName) throws IgniteException
Enables write-ahead logging for specified cache. Restoring crash-recovery guarantees of a previous call todisableWal(String)
.Internally this method will wait for all current cache operations to finish and prevent new cache operations from being executed. Then checkpoint is initiated to flush all data to disk. Control is returned to the callee when all data is persisted to disk.
WAL state can be changed only for persistent caches.
NOTE: Currently, this method should only be called on a stable topology when no nodes are leaving or joining cluster, and all baseline nodes are present. Cache may be stuck in inconsistent state due to violation of these conditions. It is advised to destroy such cache.
- Parameters:
cacheName
- Cache name.- Returns:
- Whether WAL enabled by this call.
- Throws:
IgniteException
- If error occurs.- See Also:
disableWal(String)
,isWalEnabled(String)
-
isWalEnabled
boolean isWalEnabled(String cacheName)
Checks if write-ahead logging is enabled for specified cache.- Parameters:
cacheName
- Cache name.- Returns:
True
if WAL is enabled for cache.- See Also:
disableWal(String)
,enableWal(String)
-
id
UUID id()
Cluster ID is a unique identifier automatically generated when cluster starts up for the very first time. It is a cluster-wide property so all nodes of the cluster (including client nodes) return the same value. In in-memory clusters ID is generated again upon each cluster restart. In clusters running in persistent mode cluster ID is stored to disk and is used even after full cluster restart.- Returns:
- Unique cluster ID.
-
tag
String tag()
User-defined tag describing the cluster.- Returns:
- Current tag value same across all nodes of the cluster.
-
tag
void tag(String tag) throws IgniteCheckedException
Enables user to add a specific label to the cluster e.g. to describe purpose of the cluster or any its characteristics. Tag is set cluster-wide, value set on one node will be distributed across all nodes (including client nodes) in the cluster. Maximum tag length is limited byMAX_TAG_LENGTH
value.- Parameters:
tag
- New tag to be set.- Throws:
IgniteCheckedException
- In case tag change is requested on inactive cluster or concurrent tag change request was completed before the current one. Also provided tag is checked for max length.
-
isBaselineAutoAdjustEnabled
boolean isBaselineAutoAdjustEnabled()
- Returns:
- Value of manual baseline control or auto adjusting baseline.
True
If cluster in auto-adjust.False
If cluster in manual.
-
baselineAutoAdjustEnabled
void baselineAutoAdjustEnabled(boolean baselineAutoAdjustEnabled) throws IgniteException
- Parameters:
baselineAutoAdjustEnabled
- Value of manual baseline control or auto adjusting baseline.True
If cluster in auto-adjust.False
If cluster in manuale.- Throws:
IgniteException
- If operation failed.
-
baselineAutoAdjustTimeout
long baselineAutoAdjustTimeout()
- Returns:
- Number of milliseconds to wait before the actual topology change since last server topology change (node join/left/fail).
- Throws:
IgniteException
- If operation failed.
-
baselineAutoAdjustTimeout
void baselineAutoAdjustTimeout(long baselineAutoAdjustTimeout) throws IgniteException
- Parameters:
baselineAutoAdjustTimeout
- Number of milliseconds to wait before the actual topology change since last server topology change (node join/left/fail).- Throws:
IgniteException
- If failed.
-
baselineAutoAdjustStatus
org.apache.ignite.internal.processors.cluster.baseline.autoadjust.BaselineAutoAdjustStatus baselineAutoAdjustStatus()
- Returns:
- Status of baseline auto-adjust.
-
shutdownPolicy
ShutdownPolicy shutdownPolicy()
Returns a policy of shutdown or default valueIgniteConfiguration.DFLT_SHUTDOWN_POLICY
if the property is not set.- Returns:
- Shutdown policy.
-
shutdownPolicy
void shutdownPolicy(ShutdownPolicy shutdownPolicy)
Sets a shutdown policy on a cluster. If a policy is specified here the value will override static configuration onIgniteConfiguration.setShutdownPolicy(ShutdownPolicy)
and persists to cluster meta storage.- Parameters:
shutdownPolicy
- Shutdown policy.
-
-