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 Detail

      • acquireExclusiveTopologyLock

        void acquireExclusiveTopologyLock()
      • releaseExclusiveTopologyLock

        void releaseExclusiveTopologyLock()
      • acquireSharedTopologyLock

        void acquireSharedTopologyLock()
      • releaseSharedTopologyLock

        void releaseSharedTopologyLock()
      • notifyTransactionDataReceived

        void notifyTransactionDataReceived​(int topologyId)
      • transactionDataReceived

        boolean transactionDataReceived​(int expectedTopologyId)
      • notifyTopologyInstalled

        void notifyTopologyInstalled​(int topologyId)
      • topologyReceived

        boolean topologyReceived​(int expectedTopologyId)