Interface RedundancyManager


  • public interface RedundancyManager
    • Field Detail

      • MDC_REDUNDANT_PROVIDER

        static final java.lang.String MDC_REDUNDANT_PROVIDER
        See Also:
        Constant Field Values
      • MDC_REDUNDANT_PROVIDER_SYSTEM

        static final java.lang.String MDC_REDUNDANT_PROVIDER_SYSTEM
        See Also:
        Constant Field Values
      • CONFIG_UPDATES_GAUGE

        static final java.lang.String CONFIG_UPDATES_GAUGE
        See Also:
        Constant Field Values
      • CONFIG_UPDATES_GAUGE_MAX

        static final java.lang.String CONFIG_UPDATES_GAUGE_MAX
        See Also:
        Constant Field Values
      • METRIC_QUEUED_UPDATES_PER_SEC

        static final java.lang.String METRIC_QUEUED_UPDATES_PER_SEC
        See Also:
        Constant Field Values
      • METRIC_DISPATCHED_UPDATES_PER_SEC

        static final java.lang.String METRIC_DISPATCHED_UPDATES_PER_SEC
        See Also:
        Constant Field Values
      • METRIC_PENDING_UPDATES

        static final java.lang.String METRIC_PENDING_UPDATES
        See Also:
        Constant Field Values
      • METRIC_LAST_PULL_TIMESTAMP

        static final java.lang.String METRIC_LAST_PULL_TIMESTAMP
        See Also:
        Constant Field Values
      • METRIC_LAST_PULL_DURATION

        static final java.lang.String METRIC_LAST_PULL_DURATION
        See Also:
        Constant Field Values
      • METRIC_LAST_APPLY_DURATION

        static final java.lang.String METRIC_LAST_APPLY_DURATION
        See Also:
        Constant Field Values
      • METRIC_PROVIDER_FRIENDLY_NAME

        static final java.lang.String METRIC_PROVIDER_FRIENDLY_NAME
        See Also:
        Constant Field Values
      • METRIC_FULL_SYNC_NEEDED

        static final java.lang.String METRIC_FULL_SYNC_NEEDED
        See Also:
        Constant Field Values
      • METRIC_SYSTEM_RESTART_NEEDED

        static final java.lang.String METRIC_SYSTEM_RESTART_NEEDED
        See Also:
        Constant Field Values
      • METRIC_SYSTEM_RESTART_NOT_APPLICABLE

        static final java.lang.String METRIC_SYSTEM_RESTART_NOT_APPLICABLE
        See Also:
        Constant Field Values
    • Method Detail

      • getPeerConnectionStatus

        PeerStatus getPeerConnectionStatus()
      • isRedundancyEnabled

        boolean isRedundancyEnabled()
      • isActive

        boolean isActive()
        Returns whether the system is currently "active", i.e., the node should be running fully.

        This should be checked by any part of the system that should base its state on whether or not this node is "responsible" or active. When the node is not active, the system should likely not do things like write to the PLC, query the database, etc. However, that is ultimately up to the module, and will likely involve looking at the full cluster state for the real state - ie, cold, hot, active.

        Note: it is safe to check this even when redundancy isn't enabled- in that case, it will always return true.

        Returns:
        whether the redundant node is active, or TRUE if redundancy is not enabled.
      • isMaster

        boolean isMaster()
        Returns whether this node's responsibility is MASTER. Also returns true if the node is INDEPENDENT, or not part of a cluster. Only the master is allowed to make changes to the system configuration. It is important to note that being MASTER and being ACTIVE are independent. All modules and systems should check isActive in order to determine whether they should run.

        To reiterate: this should only be used in relation to configuration related changes.

      • requestPeerActivityLevel

        void requestPeerActivityLevel​(ActivityLevel level)
        Request that the peer assume either Active or Inactive activity. The peer won't necessarily assume the exact level requested, but instead will use it's fallback activity level (such as warm).
      • forceConfigurationSync

        void forceConfigurationSync()
        Requests that the system execute a full config sync.
      • getMasterStartTime

        java.lang.Long getMasterStartTime()
        Returns the time, coordinated for this node, that the master last started. Used to negotiate history storage for "partial history" mode.
      • addRedundancyStateListener

        void addRedundancyStateListener​(RedundancyStateListener l)
        The redundancy state listener will be notified each time there is a change to any part of the redundancy state. There are really only 2 driving changes: the project state, and the responsibility state. The other parts of the RedundantState are either statically defined or based off those.
      • addMessageReceiver

        void addMessageReceiver​(java.lang.String protocol,
                                MessageReceiver recv)
        Adds a message receiver for the clustered task system. This is one manner of handling clustered tasks, and is better for tasks who rely heavily on the state of the system where they're generated, as they'll be delivered directly into that system.
        Parameters:
        protocol - a unique string identifier for messages that will be delivered to the given receiver.
        recv - a listener who will receive clustered tasks sent on the specified protocol.
      • removeMessageReceiver

        void removeMessageReceiver​(java.lang.String protocol,
                                   MessageReceiver recv)
      • executeTask

        java.io.Serializable executeTask​(java.lang.String protocol,
                                         java.io.Serializable message)
                                  throws java.lang.Exception
        This executes a task locally, and then replicates the task to the backup node IF the execution didn't produce an exception. The return value has different meanings based on whether the node is master or not. On the master, the return can be used like the normal return value of a function. On the backup it is not currently used, however, it in the future, it may be sent along so that the backup can confirm that its results line up with what was expected.

        This overload takes a protocol ID and serializable message. The message will be delivered to any MessageReceivers registered for that protocol, both locally and remotely.

        Throws:
        java.lang.Exception
      • executeTask

        java.io.Serializable executeTask​(java.lang.String protocol,
                                         java.io.Serializable message,
                                         boolean async)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • executeTask

        java.io.Serializable executeTask​(RedundantTask task)
                                  throws java.lang.Exception
        Takes a RedundantTask and executes it locally before replicating it to the clustered backup node.
        Throws:
        java.lang.Exception
        See Also:
        executeTask(String, Serializable)
      • getRuntimeStateManager

        RuntimeStateManager getRuntimeStateManager()
        Provides the RuntimeStateManager. RuntimeState is state information that is synchronized between the active and non-active node. This is different from Config state, which only goes from Master to Backup.
      • shutdown

        void shutdown()
      • getConfigLock

        java.lang.Object getConfigLock()
        The following were part of the cluster manager, and may or may not be appropriate for this interface.
      • isAutoDetectHttp

        boolean isAutoDetectHttp()
      • updateAddressesInClients

        void updateAddressesInClients()
        Update all designers and clients' list of available gateways.
      • getAllHttpAddresses

        GatewayAddressGroup getAllHttpAddresses()
        Lists the HTTP urls for the gateways in the redundant cluster. May include backup addresses if a backup node is present.
      • getPeerSystemMap

        @Deprecated
        default SystemMap getPeerSystemMap()
        Deprecated.
      • getMetrics

        java.util.Map<java.lang.String,​java.util.List<MetricValue>> getMetrics()
        Creates a new Map where the key is the redundant provider id. Then sends the map to all the redundant providers and allows them to fill in their metrics.
        Returns:
        a Map where the key is a redundant provider id and values are a List of MetricValues
      • getLocalAddress

        java.lang.String getLocalAddress()
        Returns the network address of the local machine.
        Since:
        7.8.1
      • getPeerAddress

        com.inductiveautomation.metro.api.ServerId getPeerAddress()
        Returns the gateway network server id of the peer Warning: may return null if redundant servers are not connected
      • unregisterSynchronizedStateProvider

        void unregisterSynchronizedStateProvider​(java.lang.String id)