public class DefaultClusterManager extends Object implements ClusterManager, Startable
ALL_NODES, ANY_NODE
Constructor and Description |
---|
DefaultClusterManager(ClusterNodes clusterNodes,
com.atlassian.event.api.EventPublisher eventPublisher,
ClusterLicenseCheck licenseCheck,
MessageHandlerService messageHandlerService,
NodeCutOffManager nodeCutOffManager) |
Modifier and Type | Method and Description |
---|---|
void |
checkIndex()
Forces an index check to see if it is current (or can be rebuilt from current) - if the index is too out of date
request an index replica, only do this on passive nodes for now
|
List<Node> |
findActiveAndNotAliveNodes() |
Collection<Node> |
findLiveNodes()
Returns a snapshot of the live nodes.
|
List<Node> |
findOfflineNodes() |
Set<Node> |
getAllNodes()
Returns all the nodes in the cluster.
|
String |
getNodeId()
Provides the node ID for this particular cluster node.
|
boolean |
isActive()
Returns
true if this node is active. |
boolean |
isClustered()
If there is a cluster.properties that appears to be valid
|
boolean |
isClusterLicensed()
Returns whether or not JIRA is licensed for clustered configurations.
|
boolean |
isNodeActive(@NotNull String nodeId) |
boolean |
isNodeAlive(@NotNull String nodeId) |
boolean |
isNodeOffline(@NotNull String nodeId) |
boolean |
isNodePresent(@NotNull String nodeId) |
List<String> |
moveNodesToOfflineIfOlderThan(@NotNull java.time.Duration retentionPeriod)
Update nodes's state to
Node.NodeState.OFFLINE if current node's state is Node.NodeState.ACTIVE and Not Alive for specified retention period |
void |
moveToOffline(@NotNull String nodeId)
Update nodes's state to
Node.NodeState.OFFLINE if current state is Node.NodeState.ACTIVE and Not Alive |
void |
onIndexesRestoredEvent(IndexesRestoredEvent ev) |
void |
refreshLiveNodes()
Merges the information from the heartbeat table and the clusternode table
to give accurate information of which nodes are alive.
|
void |
removeIfOffline(@NotNull String nodeId)
Remove node from cluster if node is
Node.NodeState.OFFLINE |
List<String> |
removeOfflineNodesIfOlderThan(@NotNull java.time.Duration retentionPeriod)
Remove node from cluster if node is in
Node.NodeState.OFFLINE state for specified retention period |
void |
requestCurrentIndexFromNode(String destinationNode)
We send a message to the node we wish a copy from.
|
void |
start()
This method will be called after the plugin system is fully initialised and all components added to the
dependency injection framework.
|
public DefaultClusterManager(ClusterNodes clusterNodes, com.atlassian.event.api.EventPublisher eventPublisher, ClusterLicenseCheck licenseCheck, MessageHandlerService messageHandlerService, NodeCutOffManager nodeCutOffManager)
public void start()
Startable
@Nullable public String getNodeId()
ClusterInfo
getNodeId
in interface ClusterInfo
public boolean isClustered()
isClustered
in interface ClusterInfo
public Set<Node> getAllNodes()
ClusterManager
getAllNodes
in interface ClusterManager
Node
s in a clusterpublic boolean isActive()
true
if this node is active.isActive
in interface ClusterManager
true
if this node is active.public void checkIndex()
checkIndex
in interface ClusterManager
public void requestCurrentIndexFromNode(String destinationNode)
ClusterManager
requestCurrentIndexFromNode
in interface ClusterManager
destinationNode
- Node to send the message to get an Index Copy from.public Collection<Node> findLiveNodes()
ClusterManager
findLiveNodes
in interface ClusterManager
public void refreshLiveNodes()
ClusterManager
refreshLiveNodes
in interface ClusterManager
@EventListener public void onIndexesRestoredEvent(IndexesRestoredEvent ev)
public boolean isClusterLicensed()
ClusterManager
isClusterLicensed
in interface ClusterManager
public void removeIfOffline(@NotNull @NotNull String nodeId) throws ClusterStateException
ClusterManager
Node.NodeState.OFFLINE
removeIfOffline
in interface ClusterManager
ClusterStateException
- if node is not offlinepublic List<String> removeOfflineNodesIfOlderThan(@NotNull @NotNull java.time.Duration retentionPeriod)
ClusterManager
Node.NodeState.OFFLINE
state for specified retention periodremoveOfflineNodesIfOlderThan
in interface ClusterManager
public void moveToOffline(@NotNull @NotNull String nodeId) throws ClusterStateException
ClusterManager
Node.NodeState.OFFLINE
if current state is Node.NodeState.ACTIVE
and Not AlivemoveToOffline
in interface ClusterManager
ClusterStateException
- if node is alivepublic List<String> moveNodesToOfflineIfOlderThan(@NotNull @NotNull java.time.Duration retentionPeriod)
ClusterManager
Node.NodeState.OFFLINE
if current node's state is Node.NodeState.ACTIVE
and Not Alive for specified retention periodmoveNodesToOfflineIfOlderThan
in interface ClusterManager
Node.NodeState.OFFLINE
statepublic boolean isNodeAlive(@NotNull @NotNull String nodeId)
isNodeAlive
in interface ClusterManager
public boolean isNodePresent(@NotNull @NotNull String nodeId)
isNodePresent
in interface ClusterManager
public boolean isNodeOffline(@NotNull @NotNull String nodeId)
isNodeOffline
in interface ClusterManager
Node.NodeState.OFFLINE
otherwise return falsepublic boolean isNodeActive(@NotNull @NotNull String nodeId)
isNodeActive
in interface ClusterManager
Node.NodeState.ACTIVE
otherwise return falsepublic List<Node> findActiveAndNotAliveNodes()
findActiveAndNotAliveNodes
in interface ClusterManager
Node.NodeState.ACTIVE
and not alive ClusterManager.isNodeAlive(java.lang.String)
public List<Node> findOfflineNodes()
findOfflineNodes
in interface ClusterManager
Node.NodeState.OFFLINE
Copyright © 2002-2021 Atlassian. All Rights Reserved.