Package com.atlassian.testsupport
Class NonClusterManager
java.lang.Object
com.atlassian.testsupport.NonClusterManager
- All Implemented Interfaces:
com.atlassian.beehive.ClusterLockService
,ClusterExecutionService
,ClusterManager
,ClusterManagerInternal
@Internal
public final class NonClusterManager
extends Object
implements ClusterManagerInternal, com.atlassian.beehive.ClusterLockService
An implementation of
ClusterManager
for use when no clustering is configured. It provides sensible default
implementation of some methods where appropriate, emulating a "single node cluster".-
Field Summary
Fields inherited from interface com.atlassian.confluence.cluster.ClusterExecutionService
DEFAULT_EXECUTOR_SVC_NAME
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
configure
(ClusterConfig config) Set a new cluster configuration.Get information about the running cluster.Get all attributes of the server that must be consistent between the nodes of a stable cluster.long
Gets the amount of time that the cluster has been running.com.atlassian.beehive.ClusterLock
getLockForName
(@NonNull String key) Gets status information from all members of the cluster.Get the identity of this node in the cluster.void
init()
boolean
boolean
void
publishEvent
(ConfluenceEvent event) Publish an event as a ClusterEventWrapper to other nodesvoid
Publish immediately, an event as a ClusterEventWrapper to other nodesvoid
reconfigure
(ClusterConfig config) Set a new cluster configuration and cycle the servicevoid
shutdown()
void
Start the clustering servicevoid
Stop the clustering service<T> List<ClusterNodeExecution<T>>
submitToAllNodes
(Callable<T> task, String serviceName) Submit a task to be executed on all nodes in the cluster.<T> CompletionStage<T>
submitToKeyOwner
(Callable<T> task, String serviceName, Object key) Submit a task to be executed by a service given by its name on one node of the cluster that own a given key.<T> ClusterNodeExecution<T>
submitToNode
(String nodeId, Callable<T> task, String serviceName) Submit a task to be executed on a node with the specified ID
-
Constructor Details
-
NonClusterManager
public NonClusterManager()
-
-
Method Details
-
init
public void init() -
shutdown
public void shutdown() -
configure
Description copied from interface:ClusterManagerInternal
Set a new cluster configuration.- Specified by:
configure
in interfaceClusterManagerInternal
-
getClusterInformation
Description copied from interface:ClusterManager
Get information about the running cluster.- Specified by:
getClusterInformation
in interfaceClusterManager
-
getThisNodeInformation
Description copied from interface:ClusterManager
Get the identity of this node in the cluster. ClusterNodeInformation implements equals().
- Specified by:
getThisNodeInformation
in interfaceClusterManager
- Returns:
- the identity of this node in the cluster. May return null if the node is not in a cluster.
-
getAllNodesInformation
- Specified by:
getAllNodesInformation
in interfaceClusterManager
-
isClustered
public boolean isClustered()- Specified by:
isClustered
in interfaceClusterManager
- Returns:
- true if this instance is configured to allow clustering with other nodes. Note, this does not mean this instance is licensed to cluster.
-
isConfigured
public boolean isConfigured()- Specified by:
isConfigured
in interfaceClusterManagerInternal
- Returns:
- true if
ClusterManagerInternal.configure(ClusterConfig)
has been called with a valid configuration, otherwise false.
-
publishEvent
Description copied from interface:ClusterManager
Publish an event as a ClusterEventWrapper to other nodesThis waits for any current transaction to be committed successfully before scheduling the event for publishing.
- Specified by:
publishEvent
in interfaceClusterManager
-
publishEventImmediately
Description copied from interface:ClusterManager
Publish immediately, an event as a ClusterEventWrapper to other nodesThis is done immediately regardless of the state of any current transactions.
- Specified by:
publishEventImmediately
in interfaceClusterManager
-
reconfigure
Description copied from interface:ClusterManagerInternal
Set a new cluster configuration and cycle the service- Specified by:
reconfigure
in interfaceClusterManagerInternal
-
startCluster
public void startCluster()Description copied from interface:ClusterManagerInternal
Start the clustering service- Specified by:
startCluster
in interfaceClusterManagerInternal
-
stopCluster
public void stopCluster()Description copied from interface:ClusterManagerInternal
Stop the clustering service- Specified by:
stopCluster
in interfaceClusterManagerInternal
-
getNodeStatusMap
Description copied from interface:ClusterManager
Gets status information from all members of the cluster.- Specified by:
getNodeStatusMap
in interfaceClusterManager
-
getClusterInvariants
Description copied from interface:ClusterManagerInternal
Get all attributes of the server that must be consistent between the nodes of a stable cluster. They are to be retrieved from another member in the cluster. If there are no other members currently active in the cluster, then return null.- Specified by:
getClusterInvariants
in interfaceClusterManagerInternal
- Returns:
- the cluster invariants of this server
-
submitToKeyOwner
Description copied from interface:ClusterExecutionService
Submit a task to be executed by a service given by its name on one node of the cluster that own a given key.- Specified by:
submitToKeyOwner
in interfaceClusterExecutionService
- Parameters:
task
- task to be executed on the node that owns the provided key, it must beSerializable
serviceName
- name of service used to execute the taskkey
- key used to determined which node is going to execute the task, it must beSerializable
- Returns:
- CompletionStage
-
submitToNode
public <T> ClusterNodeExecution<T> submitToNode(String nodeId, Callable<T> task, String serviceName) Description copied from interface:ClusterExecutionService
Submit a task to be executed on a node with the specified ID- Specified by:
submitToNode
in interfaceClusterExecutionService
- Parameters:
nodeId
- ID of the node that should execute the task. If null, task will be executed locally.task
- task to be executed on the specified nodeserviceName
- name of service used to execute the task- Returns:
- node execution result
-
submitToAllNodes
Description copied from interface:ClusterExecutionService
Submit a task to be executed on all nodes in the cluster.- Specified by:
submitToAllNodes
in interfaceClusterExecutionService
- Parameters:
task
- task to be executed on the node that owns the provided key, it must beSerializable
serviceName
- name of service used to execute the task- Returns:
- List of
ClusterNodeExecution
, one element from each node
-
getClusterUptime
public long getClusterUptime()Description copied from interface:ClusterManager
Gets the amount of time that the cluster has been running.- Specified by:
getClusterUptime
in interfaceClusterManager
- Returns:
- the time in milliseconds since the first node in the cluster came up, or the node uptime if not clustered.
-
getLockForName
- Specified by:
getLockForName
in interfacecom.atlassian.beehive.ClusterLockService
-