Interface StateTransferLock

All Known Implementing Classes:
StateTransferLockImpl

public interface StateTransferLock
We use the state transfer lock for three different things:
  1. We don't want to execute a command until we have the transaction table for that topology id. For this purpose it works like a latch, commands wait on the latch and state transfer opens the latch when it has received all the transaction data for that topology id.
  2. Do not write anything to the data container in a segment that we have already removed. For this purpose, ownership checks and data container writes acquire a shared lock, and the segment removal acquires an exclusive lock.
  3. We want to handle state requests only after we have installed the same topology id, because this guarantees that we also have installed the corresponding view id and we have all the joiners in our JGroups view. Here it works like a latch as well, state requests wait on the latch and state transfer opens the latch when it has received all the transaction data for that topology id.
Since:
5.2
Author:
anistor@redhat.com, Dan Berindei
  • Method Details

    • acquireExclusiveTopologyLock

      void acquireExclusiveTopologyLock()
    • releaseExclusiveTopologyLock

      void releaseExclusiveTopologyLock()
    • acquireSharedTopologyLock

      void acquireSharedTopologyLock()
    • releaseSharedTopologyLock

      void releaseSharedTopologyLock()
    • notifyTransactionDataReceived

      void notifyTransactionDataReceived(int topologyId)
    • transactionDataFuture

      CompletionStage<Void> transactionDataFuture(int expectedTopologyId)
      Returns:
      a stage that completes successfully when topology expectedTopologyId has been installed and transaction data has been received, or with a TimeoutException after ClusteringConfiguration.remoteTimeout() expires.
    • transactionDataReceived

      boolean transactionDataReceived(int expectedTopologyId)
    • notifyTopologyInstalled

      void notifyTopologyInstalled(int topologyId)
    • topologyFuture

      CompletionStage<Void> topologyFuture(int expectedTopologyId)
      Returns:
      a stage that completes successfully when topology expectedTopologyId has been installed, or with a TimeoutException after StateTransferConfiguration.timeout() expires.
    • waitForTopology

      @Deprecated default void waitForTopology(int expectedTopologyId, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException
      Deprecated.
      Throws:
      InterruptedException
      TimeoutException
    • topologyReceived

      boolean topologyReceived(int expectedTopologyId)