Interface XSiteStateTransferManager

All Known Implementing Classes:
NoOpXSiteStateTransferManager, XSiteStateTransferManagerImpl

public interface XSiteStateTransferManager
It manages the state transfer between sites.
Since:
7.0
Author:
Pedro Ruivo
  • Field Details

  • Method Details

    • notifyStatePushFinished

      void notifyStatePushFinished(String siteName, Address node, boolean statusOk)
      It receives the notifications from local site when some node finishes pushing the state to the remote site.
      Parameters:
      siteName - the remote site name
      node - the Address from the node that finishes.
      statusOk - true if no error or exception occurred during the state transfer.
    • startPushState

      void startPushState(String siteName) throws Throwable
      It notifies all nodes from local site to start transfer the state to the remote site.
      Parameters:
      siteName - the remote site name
      Throws:
      Throwable - If some unexpected behavior occurs.
    • cancelPushState

      void cancelPushState(String siteName) throws Throwable
      It cancels a running state transfer.
      Parameters:
      siteName - the site name to where the state is being sent.
      Throws:
      Throwable - if some exception occurs during the remote invocation with the local cluster or remote site.
    • getRunningStateTransfers

      List<String> getRunningStateTransfers()
      Returns:
      a list of site names in which this cache is pushing state.
    • getStatus

      Returns:
      the completed state transfer status for which this node is the coordinator.
    • clearStatus

      void clearStatus()
      Clears the completed state transfer status.
    • getClusterStatus

      Map<String,StateTransferStatus> getClusterStatus()
      Returns:
      the completed state transfer status from all the coordinators in the cluster.
    • clearClusterStatus

      void clearClusterStatus()
      Clears the completed state transfer status in all the cluster.
    • getSendingSiteName

      String getSendingSiteName()
      Returns:
      null if this node is not receiving state or the site name which is sending the state.
    • cancelReceive

      void cancelReceive(String siteName) throws Exception
      Sets the cluster to normal state.

      The main use for this method is when the link between the sites is broken and the receiver site keeps it state transfer state forever.

      Parameters:
      siteName - the site name which is sending the state.
      Throws:
      Exception - if some exception occurs during the remote invocation.
    • becomeCoordinator

      void becomeCoordinator(String siteName)
      Makes this node the coordinator for the state transfer to the site name.

      This method is invoked when the coordinator dies and this node receives a late start state transfer request.

      Parameters:
      siteName - the site name.
    • onTopologyUpdated

      void onTopologyUpdated(CacheTopology cacheTopology, boolean stateTransferInProgress)
      Notifies XSiteStateTransferManager that a new CacheTopology is installed and if the local cluster state transfer is in progress (or about to start)
      Parameters:
      cacheTopology - The new CacheTopology.
      stateTransferInProgress - true if the state transfer is in progress or starting.
    • getStateProvider

      XSiteStateProvider getStateProvider()
      Returns:
      The XSiteStateProvider instance.
    • getStateConsumer

      XSiteStateConsumer getStateConsumer()
      Returns:
      The XSiteStateConsumer instance.
    • startAutomaticStateTransferTo

      void startAutomaticStateTransferTo(ByteString remoteSite, boolean ignoreStatus)
      Starts the automatic cross-site state transfer if available and if required.
      Parameters:
      remoteSite - The remote site to send state to.
      ignoreStatus - If true, it starts the state transfer based only on XSiteStateTransferMode.
    • stateTransferMode

      XSiteStateTransferMode stateTransferMode(String site)
      Parameters:
      site - The remote site.
      Returns:
      The XSiteStateTransferMode configured for the remote site.
    • setAutomaticStateTransfer

      boolean setAutomaticStateTransfer(String site, XSiteStateTransferMode mode)
      Sets the XSiteStateTransferMode to the remote site.

      If the configuration for the remote site does not support the XSiteStateTransferMode, then this method returns false.

      Parameters:
      site - The remote site.
      mode - The new XSiteStateTransferMode.
      Returns:
      false if the site does not support the corresponding XSiteStateTransferMode.