Class ClusterNode
- java.lang.Object
-
- de.aristaflow.adept2.core.registry.InjectedADEPT2Service
-
- de.aristaflow.adept2.core.registry.InitialisedInjectedService
-
- de.aristaflow.adept2.core.registry.AuthenticatedInjectedService
-
- de.aristaflow.adept2.core.registry.cluster.ClusterNode
-
- All Implemented Interfaces:
ADEPT2Service
,LogService
,ServiceThreadHandling
,ClusterService
,ClusterCommPoller
,ClusterDbPoller
@Deprecated public class ClusterNode extends AuthenticatedInjectedService implements ClusterService, ClusterDbPoller, ClusterCommPoller
Deprecated.This class is subject of change and must not be used yet except for testing purpose. Its interface and implementation may change any time!This class represents a node in an AristaFlow cluster. It is used for bootstrapping a node which either bootstraps as server or as client. In one cluster only one node will be the server, all other nodes will be clients. In case the server terminates, another node will take its place. This will be handled automatically.
To allow for nodes to switch roles between client and server, each node needs a server as well as a client configuration. Both are provided in the constructor of a cluster node.Use this class instead of
AristaFlowPlatform
for bootstrapping in a cluster environment.This class handles all cluster stuff automatically, that is, if the server is not available any more or there are any problems reaching the server, the cluster node restarts. In case of problems it also may restart or even terminate in case of unrecoverable problems. However, this requires to run asynchronously, so
bootstrap()
,restart(long)
andterminate()
return early. You will have to check the status viaClusterNodeState.getStatus()
orClusterNodeState.awaitStatus(long, Status...)
to make sure that the cluster is in the appropriate state.Nevertheless, make sure that you
terminate()
the cluster node (and awaitStatus.TERMINATED
) to properly terminate the platform! Otherwise your JVM may not exit properly or not exit at all.
-
-
Field Summary
Fields Modifier and Type Field Description protected de.aristaflow.adept2.core.registry.cluster.ServerData
commServer
Deprecated.Data related to the current server like URIs and the amount of lost connections.protected Lock
controlLock
Deprecated.The lock required to control this cluster node.protected ClusterNodeInformation
dbServer
Deprecated.Data related to the current server as retrieved from the database.protected HeartBeatControl
heartBeatControl
Deprecated.The control for the heartbeats of this cluster node.protected de.aristaflow.adept2.core.registry.cluster.NodeControl
nodeControl
Deprecated.The thread controlling this node, that is it handles the complete node lifecycle including restarting and thus changing roles.protected ClusterNodeState
nodeState
Deprecated.The state of this cluster node encapsulated in a separate object.protected Registry
registry
Deprecated.The registry used to access the communication service of the cluster server.protected ServiceStateTracker
serviceStateTracker
Deprecated.The service state tracker coupled to the lifecycle of this cluster node instead of the internal platform.-
Fields inherited from class de.aristaflow.adept2.core.registry.InitialisedInjectedService
adept2Service, loggerClass, NOT_INITIALISED_EXCEPTION
-
Fields inherited from class de.aristaflow.adept2.core.registry.InjectedADEPT2Service
EMPTY_STRING_ARRAY, logger, runtimeRequiredServices, startupRequiredServices
-
-
Constructor Summary
Constructors Constructor Description ClusterNode(ConfigurationPropertyProvider serverProvider, ConfigurationPropertyProvider clientProvider, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configuration providers.ClusterNode(org.apache.commons.configuration2.Configuration serverConf, ConfigurationPropertyProvider serverProvider, org.apache.commons.configuration2.Configuration clientConf, ConfigurationPropertyProvider clientProvider, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configurations and the designated configuration providers.ClusterNode(org.apache.commons.configuration2.Configuration serverConf, org.apache.commons.configuration2.Configuration clientConf, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configurations.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
bootstrap()
Deprecated.Bootstraps this cluster node asynchronously.SimpleClusterNodeInformation
doubtfulStatus(SessionToken session, String requestingNode, long lastRequesterUpdate, long lastServerUpdate, long serverRunningSince)
Deprecated.Gets information on the cluster node implementing this cluster service and signals this cluster node, that its status is doubtful.Set<ClusterNodeInformation>
getAllClusterNodes()
Deprecated.Retrieves the set of all known Cluster Nodes (dead or alive).ClientService
getClientService(long timeout)
Deprecated.Gets the client service providing convenient access to the services provided by the platform and needed by client components.SimpleClusterNodeInformation
getNodeInformation(SessionToken session)
Deprecated.Gets information on the cluster node implementing this cluster service.Registry
getRegistry(long timeout)
Deprecated.Gets the wrapper for accessing the platform via theRegistry
-interface waiting for the designated amount of time if the platform is currently not available.org.apache.commons.configuration2.Configuration
getRootConfiguration(long timeout)
Deprecated.Gets the root configuration used for this cluster node as clone waiting for the designated amount of time if the platform is currently not available.URI[]
getServerCommService()
Deprecated.Gets the URIs of the cluster service of the server for inter node communication.ServiceStateTracker
getServiceStateTracker()
Deprecated.Gets the service state tracker coupled to the lifecycle of this cluster node instead of the internal platform.ClusterNodeState
getState()
Deprecated.Gets the node state of this cluster node.void
init(URI[] localExportedUris, URI[] globalExportedUris)
Deprecated.Checks the licence for failover cluster
and starts the heartbeat using the communication.void
initPlatform(org.apache.commons.configuration2.Configuration conf, Registry reg)
Deprecated.Creates a wrappedAbstractAuthenticatedService
.void
pollServerComm(long timeout, boolean serverDoubtful)
Deprecated.Polls the server of this cluster via communication.boolean
pollServerDb(long timeout, ClusterInteractionRequest request)
Deprecated.Polls the server of this cluster and sends an alive signal to the cluster DB service.Status
restart(long timeout)
Deprecated.Sends a restart request to this cluster node and waits the designated time for the restart.void
restartInternal()
Deprecated.Signals a restart of this cluster node.void
shutdown(boolean emergency)
Deprecated.Signals this service that it is being shut down.void
start()
Deprecated.Start the service state tracker after starting this injected service.void
terminate()
Deprecated.Sends a terminate request to this cluster node.-
Methods inherited from class de.aristaflow.adept2.core.registry.AuthenticatedInjectedService
createChildSession, createSession, getAgent, getServiceInstanceName, getSessionFactory, getTopLevelAgent, getUserCredentials, sessionHasAllCapabilities, sessionHasCapability, sessionHasOneCapability
-
Methods inherited from class de.aristaflow.adept2.core.registry.InitialisedInjectedService
_sessionActive, _sessionFinished, changeLogContext, changeLogContext, changeLogContext, csvLoggingEnabled, getClassSpecificJulLogger, getLogger, getRelease, isActive, isInitialised, logMethodEntry, logMethodEntry, logMethodEntry, logMethodExit, logMethodExit, privilegeThread, revertLogContextChanges, sessionActive, sessionActive, sessionActive, sessionFinished, signalShutdown, signalStart, unprivilegeThread
-
Methods inherited from class de.aristaflow.adept2.core.registry.InjectedADEPT2Service
getLocalUris, getRuntimeRequiredServices, getStartupRequiredServices, getURIs, ping, preShutdown
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface de.aristaflow.adept2.base.service.ADEPT2Service
getLocalUris, getRelease, getRuntimeRequiredServices, getServiceInstanceName, getStartupRequiredServices, getURIs, ping, preShutdown
-
-
-
-
Field Detail
-
dbServer
protected ClusterNodeInformation dbServer
Deprecated.Data related to the current server as retrieved from the database. This will benull
until a server is retrieved from the database. Afterwards this information refers to the last server retrieved from the database. This data may be stale.
-
commServer
protected final de.aristaflow.adept2.core.registry.cluster.ServerData commServer
Deprecated.Data related to the current server like URIs and the amount of lost connections.
-
nodeState
protected final ClusterNodeState nodeState
Deprecated.The state of this cluster node encapsulated in a separate object.
-
heartBeatControl
protected final HeartBeatControl heartBeatControl
Deprecated.The control for the heartbeats of this cluster node.
-
nodeControl
protected final de.aristaflow.adept2.core.registry.cluster.NodeControl nodeControl
Deprecated.The thread controlling this node, that is it handles the complete node lifecycle including restarting and thus changing roles.
-
controlLock
protected final Lock controlLock
Deprecated.The lock required to control this cluster node. This includes starting, terminating and restarting but also polling. Polling relies on the current cluster node status and update times so this must not happen concurrently while another thread performs another control operation.
-
serviceStateTracker
protected final ServiceStateTracker serviceStateTracker
Deprecated.The service state tracker coupled to the lifecycle of this cluster node instead of the internal platform. This allows for service state tracking independent from the current state of the internal platform.
-
registry
protected Registry registry
Deprecated.The registry used to access the communication service of the cluster server.
-
-
Constructor Detail
-
ClusterNode
public ClusterNode(org.apache.commons.configuration2.Configuration serverConf, org.apache.commons.configuration2.Configuration clientConf, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configurations.- Parameters:
serverConf
- The configuration to be provided when booted as server. This may either be a complete root configuration (without additional configuration directories), a delta configuration complementing or overriding the configurations from the configuration directories or evennull
. If this isnull
, only configurations from the configuration directories will be used but this requires a validrootConfFileName
.clientConf
- The configuration to be provided when booted as client. This may either be a complete root configuration (without additional configuration directories), a delta configuration complementing or overriding the configurations from the configuration directories or evennull
. If this isnull
, only configurations from the configuration directories will be used but this requires a validrootConfFileName
.
The URI of the global registry will be set to the one of the server of this cluster.servAvailPoolSize
- The amount of threads used for the service availability tracking.servAvailPollRate
- The rate in milliseconds at which to poll the availability of services.logger
- The logger which to use for information that is happening asynchronously that is critical or worth knowing. This has to be configured separately since it is used outside of the platform lifecycle.- See Also:
AristaFlowPlatform(Configuration)
-
ClusterNode
public ClusterNode(ConfigurationPropertyProvider serverProvider, ConfigurationPropertyProvider clientProvider, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configuration providers.- Parameters:
serverProvider
- The configuration provider to be used when booted as server. This can benull
and it can be the same as theclientProvider
.clientProvider
- The configuration provider to be used when booted as client. This can benull
and it can be the same as theserverProvider
.servAvailPoolSize
- The amount of threads used for the service availability tracking.servAvailPollRate
- The rate in milliseconds at which to poll the availability of services.logger
- The logger which to use for information that is happening asynchronously that is critical or worth knowing. This has to be configured separately since it is used outside of the platform lifecycle.- See Also:
AristaFlowPlatform(ConfigurationPropertyProvider)
-
ClusterNode
public ClusterNode(org.apache.commons.configuration2.Configuration serverConf, ConfigurationPropertyProvider serverProvider, org.apache.commons.configuration2.Configuration clientConf, ConfigurationPropertyProvider clientProvider, int servAvailPoolSize, long servAvailPollRate, Logger logger)
Deprecated.Creates a newClusterNode
having the designated configurations and the designated configuration providers.- Parameters:
serverConf
- The configuration to be provided when booted as server. This may either be a complete root configuration (without additional configuration directories), a delta configuration complementing or overriding the configurations from the configuration directories or evennull
. If this isnull
, only configurations from the configuration directories will be used but this requires a validrootConfFileName
.serverProvider
- The configuration provider to be used when booted as server. This can benull
and it can be the same as theclientProvider
.clientConf
- The configuration to be provided when booted as client. This may either be a complete root configuration (without additional configuration directories), a delta configuration complementing or overriding the configurations from the configuration directories or evennull
. If this isnull
, only configurations from the configuration directories will be used but this requires a validrootConfFileName
.
The URI of the global registry will be set to the one of the server of this cluster.clientProvider
- The configuration provider to be used when booted as client. This can benull
and it can be the same as theserverProvider
.servAvailPoolSize
- The amount of threads used for the service availability tracking.servAvailPollRate
- The rate in milliseconds at which to poll the availability of services.logger
- The logger which to use for information that is happening asynchronously that is critical or worth knowing. This has to be configured separately since it is used outside of the platform lifecycle.- See Also:
AristaFlowPlatform(Configuration)
-
-
Method Detail
-
bootstrap
public void bootstrap()
Deprecated.Bootstraps this cluster node asynchronously. You might want to await a specific status or the client service or the registry.Only one platform may be running at a time. You need to terminate a platform before you can bootstrap another one. Note that terminating is done asynchronously so you need to wait for this cluster node to be terminated.
- Throws:
IllegalThreadStateException
- If this cluster node has already been bootstrapped, anIllegalThreadStateException
will be thrown.
-
getServiceStateTracker
public ServiceStateTracker getServiceStateTracker()
Deprecated.Gets the service state tracker coupled to the lifecycle of this cluster node instead of the internal platform. This allows for service state tracking independent from the current state of the internal platform.- Returns:
- The service state tracker coupled to the lifecycle of this cluster node instead of the internal platform.
-
getClientService
public ClientService getClientService(long timeout) throws AbortServiceException, InterruptedException
Deprecated.Gets the client service providing convenient access to the services provided by the platform and needed by client components. The client service will be retrieved with waiting for the platform for the designated amount of time if it is currently not available.- Parameters:
timeout
- The time in milliseconds to wait for the platform if it is not available.- Returns:
- The client service for usage by client components.
- Throws:
InterruptedException
- If the current thread is interrupted while waiting for the platform to become available, anInterruptedException
will be thrown.ServiceNotKnownException
- If there are problems retrieving the client service, aServiceNotKnownException
will be thrown.AbortServiceException
- If the platform has not been bootstrapped or terminated or a non-recoverable problem has occurred, anAbortServiceException
will be thrown.
-
getRegistry
public Registry getRegistry(long timeout) throws AbortServiceException, InterruptedException
Deprecated.Gets the wrapper for accessing the platform via theRegistry
-interface waiting for the designated amount of time if the platform is currently not available. The registry is used by (server) services to access the registry. Clients should always use an appropriateclient service
. Only use this registry for very special purposes.- Parameters:
timeout
- The time in milliseconds to wait for the platform if it is not available.- Returns:
- The registry providing generic access to the platform or
null
if the timeout elapsed before the platform becomes available. - Throws:
InterruptedException
- If the current thread is interrupted while waiting for the platform to become available, anInterruptedException
will be thrown.ServiceNotKnownException
- If there are problems loading the model factory registry, aServiceNotKnownException
will be thrown.AbortServiceException
- If the platform has not been bootstrapped or terminated or a non-recoverable problem has occurred, anAbortServiceException
will be thrown.
-
getRootConfiguration
public org.apache.commons.configuration2.Configuration getRootConfiguration(long timeout) throws AbortServiceException, InterruptedException
Deprecated.Gets the root configuration used for this cluster node as clone waiting for the designated amount of time if the platform is currently not available. Note that the root configuration need not contain all configuration values. Configurations from referenced configuration files will not be part of it.
Note that the root configuration does not contain the default values added by the configuration description of a service. Additionally, it is not validated yet, that is, some required values may be missing leading to problems when starting the corresponding service.- Parameters:
timeout
- The time in milliseconds to wait for the platform if it is not available.- Returns:
- A clone of the root configuration after bootstrapping and
null
after terminating. - Throws:
InterruptedException
- If the current thread is interrupted while waiting for the platform to become available, anInterruptedException
will be thrown.ServiceNotKnownException
- If there are problems loading the model factory registry, aServiceNotKnownException
will be thrown.AbortServiceException
- If the platform has not been bootstrapped or terminated or a non-recoverable problem has occurred, anAbortServiceException
will be thrown.
-
restart
public Status restart(long timeout) throws InterruptedException, AbortServiceException
Deprecated.Sends a restart request to this cluster node and waits the designated time for the restart.- Parameters:
timeout
- The time in milliseconds to wait for the cluster node to be restarted or terminated. reach one of the designated statuses. Use 0 to not wait at all or a negative value to wait without time limit.- Returns:
- The status this node reached after restarting (
Status.RUNNING_SERVER
,Status.CONNECTED_CLIENT
orStatus.TERMINATED
) ornull
in case the time elapsed before the status is reached. - Throws:
InterruptedException
- If the current thread is interrupted while waiting for the restart, anInterruptedException
will be thrown.AbortServiceException
- If there are non-recoverable problems with the cluster especially when bootstrapping, anAbortServiceException
will be thrown.
-
terminate
public void terminate()
Deprecated.Sends a terminate request to this cluster node. This will terminate the platform by shutting down the bootstrap registry and signalling this to the cluster asynchronously. You have to call this method before exiting the JVM. Otherwise the services will not be terminated correctly and may have inconsistent persisted data. This especially applies to the cluster DB service.
If there are problems when terminating, they will be logged.
You should wait for this cluster node to beStatus.TERMINATED
before really shutting down or exiting the JVM.Terminating the platform several times will be ignored. The same applies to terminating before loading.
-
getAllClusterNodes
public Set<ClusterNodeInformation> getAllClusterNodes()
Deprecated.Retrieves the set of all known Cluster Nodes (dead or alive).- Returns:
- The set of all known Cluster Nodes (dead or alive) or
null
in case no cluster DB is available.
-
pollServerDb
public boolean pollServerDb(long timeout, ClusterInteractionRequest request) throws InterruptedException, TimeoutException, SQLException
Deprecated.Description copied from interface:ClusterDbPoller
Polls the server of this cluster and sends an alive signal to the cluster DB service. If the server is no longer available or it changed, a restart should be executed. This is indicated by the return value.If the control of the cluster node cannot be acquired in the designated time, this method will do nothing.
- Specified by:
pollServerDb
in interfaceClusterDbPoller
- Parameters:
timeout
- The time in milliseconds to wait for the cluster control lock.request
- Whether to simply poll or to restart the server. A restart request contains the cluster name, the node name as well as the time since when the server has been running. If this isnull
, the current server will just be polled.- Returns:
- Whether the cluster node needs to restart since another server has been elected or is about to be elected.
- Throws:
InterruptedException
- If the calling thread is interrupted while waiting for the node control or has been interrupted before, anInterruptedException
will be thrown.TimeoutException
- If the table for updating the status cannot be locked in time, aTimeoutException
will be thrown.SQLException
- If there are problems updating the status in the cluster table, anSQLException
will be thrown.
-
restartInternal
public void restartInternal()
Deprecated.Description copied from interface:ClusterDbPoller
Signals a restart of this cluster node. This may be for instance due to the cluster requiring a new server (ClusterDbPoller.pollServerDb(long, ClusterInteractionRequest)
) or polling fails too often.- Specified by:
restartInternal
in interfaceClusterDbPoller
-
getServerCommService
public URI[] getServerCommService()
Deprecated.Description copied from interface:ClusterCommPoller
Gets the URIs of the cluster service of the server for inter node communication.- Specified by:
getServerCommService
in interfaceClusterCommPoller
- Returns:
- The URIs of the cluster service of the server for inter node
communication or
null
if no global registry URIs are set.
-
pollServerComm
public void pollServerComm(long timeout, boolean serverDoubtful) throws InterruptedException
Deprecated.Description copied from interface:ClusterCommPoller
Polls the server of this cluster via communication. If the server cannot be reached via communication, the corresponding lost count will be increased. Afterwards the cluster heartbeat using the database will be notified. It will also be notified if the state of the server changes.If the control of the cluster node cannot be acquired in the designated time, this method will do nothing.
- Specified by:
pollServerComm
in interfaceClusterCommPoller
- Parameters:
timeout
- The time in milliseconds to wait for the cluster control lock.serverDoubtful
- Whether the server is doubtful and should be notified appropriately.- Throws:
InterruptedException
- If the calling thread is interrupted while waiting for the node control or has been interrupted before, anInterruptedException
will be thrown.
-
getState
public ClusterNodeState getState()
Deprecated.Gets the node state of this cluster node. This reflects the current state of the cluster node all the time.- Returns:
- The node state of this cluster node.
-
initPlatform
public void initPlatform(org.apache.commons.configuration2.Configuration conf, Registry reg) throws AbortServiceException
Deprecated.Description copied from class:AuthenticatedInjectedService
Creates a wrappedAbstractAuthenticatedService
.- Overrides:
initPlatform
in classAuthenticatedInjectedService
- Parameters:
conf
- The configuration provided by the platform.reg
- The registry allowing to access the platform.- Throws:
AbortServiceException
- If there are problems initialising this service, anAbortServiceException
will be thrown.
-
init
public void init(URI[] localExportedUris, URI[] globalExportedUris) throws AbortServiceException
Deprecated.Checks the licence for failover cluster
and starts the heartbeat using the communication.- Specified by:
init
in interfaceADEPT2Service
- Overrides:
init
in classInitialisedInjectedService
- Parameters:
localExportedUris
- The URIs with which this service is exported locally or a local URI or an empty array for internal services.globalExportedUris
- The URIs with which this service is published globally ornull
in case the service is not published.- Throws:
AbortServiceException
- If this service cannot be initialised due to a severe problem, anAbortServiceException
will be thrown.ADEPT2Service.shutdown(boolean)
will not be called when aborting; the service has to shut down itself/clean up before throwing the exception.- See Also:
InjectedADEPT2Service.init(URI[], URI[])
,AbstractADEPT2Service.init(URI[], URI[])
-
start
public void start() throws AbortServiceException
Deprecated.Start the service state tracker after starting this injected service. This service is used to track the platform state and should be started when starting the service state tracker.- Specified by:
start
in interfaceADEPT2Service
- Overrides:
start
in classInitialisedInjectedService
- Throws:
AbortServiceException
- If this service cannot be started due to a severe problem, anAbortServiceException
will be thrown.ADEPT2Service.shutdown(boolean)
will not be called when aborting; the service has to shut down itself/clean up before throwing the exception.- See Also:
InjectedADEPT2Service.start()
,AbstractADEPT2Service.start()
-
shutdown
public void shutdown(boolean emergency)
Deprecated.Description copied from interface:ADEPT2Service
Signals this service that it is being shut down. While this method is called, the service is no longer (remotely) available. It should terminate and close all activities and connections. Since the service is in an inconsistent state while shutting down, access should be restricted to the threads relevant for shutting down. All other requests should be blocked (seeServiceThreadHandling
.
All startup required services are available in shutdown, runtime services may already be shut down.
In case of an emergency shutdown, even startup required services may not be available. Additionally, shutting down should be rather fast, so cleanup should concentrate on the really important things and use brief timeouts when waiting.- Specified by:
shutdown
in interfaceADEPT2Service
- Overrides:
shutdown
in classInitialisedInjectedService
- Parameters:
emergency
- Whether the shutdown will be an emergency shutdown.- See Also:
InjectedADEPT2Service.start()
,AbstractADEPT2Service.start()
-
getNodeInformation
public SimpleClusterNodeInformation getNodeInformation(SessionToken session)
Deprecated.Description copied from interface:ClusterService
Gets information on the cluster node implementing this cluster service.- Specified by:
getNodeInformation
in interfaceClusterService
- Parameters:
session
- The session which is used to check for access rights on this method.- Returns:
- The simple information for this cluster node, that is name, address, status, last update time and running since. Status and last update time may differ from the values in the database, e. g. a node has changed its status but cannot access the database.
-
doubtfulStatus
public SimpleClusterNodeInformation doubtfulStatus(SessionToken session, String requestingNode, long lastRequesterUpdate, long lastServerUpdate, long serverRunningSince)
Deprecated.Description copied from interface:ClusterService
Gets information on the cluster node implementing this cluster service and signals this cluster node, that its status is doubtful. This urges this cluster node to update the database shortly. In case of problems accessing the database, it may even signal its termination.- Specified by:
doubtfulStatus
in interfaceClusterService
- Parameters:
session
- The session which is used to check for access rights on this method.requestingNode
- The name of the node notifying the doubtful status.lastRequesterUpdate
- The last time the requester has updated its status (which is the same as checking for the server status.lastServerUpdate
- The last time the server has updated its status in the database according to the requester. If this is older than the last update time of the server, the requester has not the latest status, thus the notified doubtful status is not valid (any more).serverRunningSince
- The time the server has switched to running in the database according to the requester. If this is older than the current running since time, the requester has not the latest status, thus the notified doubtful status is not valid (any more).- Returns:
- The simple information for this cluster node, that is name, address, status, last update time and running since. Status and last update time may differ from the values in the database, e. g. a node has changed its status but cannot access the database.
-
-