|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.beehive.AbstractClusterNodeHeartbeatService
public abstract class AbstractClusterNodeHeartbeatService
Implementation of ClusterNodeHeartbeatService.
It is up to the concrete class to ensure that startHeartbeat() is called upon product startup.
The current heartbeat is one minute which is the finest that atlassian-scheduler currently allows.
| Constructor Summary | |
|---|---|
AbstractClusterNodeHeartbeatService(ClusterNodeHeartBeatDao clusterNodeHeartBeatDao,
com.atlassian.scheduler.SchedulerService schedulerService)
|
|
| Method Summary | |
|---|---|
Collection<String> |
findLiveNodes()
Returns all nodes that have sent a heartbeat within the default threshold time. |
Collection<String> |
findLiveNodes(long threshold)
Returns all nodes that have sent a heartbeat within the given threshold. |
Long |
getLastHeartbeatTime(String nodeId)
Returns the last time a heartbeat was sent by the given node. |
String |
getNodeId()
Returns the node ID for this node. |
boolean |
isNodeLive(String nodeId)
Checks whether the given cluster node is considered "live". |
protected void |
startHeartbeat()
The concrete class must ensure that this is called upon product startup, but after the DB is available. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public AbstractClusterNodeHeartbeatService(ClusterNodeHeartBeatDao clusterNodeHeartBeatDao,
com.atlassian.scheduler.SchedulerService schedulerService)
| Method Detail |
|---|
protected void startHeartbeat()
throws com.atlassian.scheduler.SchedulerServiceException
com.atlassian.scheduler.SchedulerServiceException - if the heartbeat job could not be scheduled. This should be considered a fatal exception.@Nonnull public String getNodeId()
ClusterNodeHeartbeatService
getNodeId in interface ClusterNodeHeartbeatService
public boolean isNodeLive(@Nonnull
String nodeId)
ClusterNodeHeartbeatServiceEach live node will be writing a heartbeat on a set schedule (eg once a minute). A node is considered live if it has written a heartbeat within a reasonable tolerance level (eg 5 minutes).
The tolerance level needs to be large enough to avoid certain expected slow-downs in the system including GC pauses, or just general slowness in the JVM / scheduler / network / database of the remote node.
isNodeLive in interface ClusterNodeHeartbeatServicenodeId - the cluster node to check
public Long getLastHeartbeatTime(@Nonnull
String nodeId)
ClusterNodeHeartbeatServiceA null value indicates no heartbeats have ever been sent by the given node.
getLastHeartbeatTime in interface ClusterNodeHeartbeatServicenodeId - the node
@Nonnull public Collection<String> findLiveNodes()
ClusterNodeHeartbeatService
findLiveNodes in interface ClusterNodeHeartbeatServiceClusterNodeHeartbeatService.findLiveNodes(long)@Nonnull public Collection<String> findLiveNodes(long threshold)
ClusterNodeHeartbeatService
findLiveNodes in interface ClusterNodeHeartbeatServicethreshold - the threshold in milliseconds
ClusterNodeHeartbeatService.findLiveNodes()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||