Package org.infinispan.statetransfer
Interface StateTransferLock
- All Known Implementing Classes:
StateTransferLockImpl
public interface StateTransferLock
We use the state transfer lock for three different things:
- 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.
- 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.
- 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 Summary
Modifier and TypeMethodDescriptionvoidvoidvoidnotifyTopologyInstalled(int topologyId) voidnotifyTransactionDataReceived(int topologyId) voidvoidtopologyFuture(int expectedTopologyId) booleantopologyReceived(int expectedTopologyId) transactionDataFuture(int expectedTopologyId) booleantransactionDataReceived(int expectedTopologyId) default voidwaitForTopology(int expectedTopologyId, long timeout, TimeUnit unit) Deprecated, for removal: This API element is subject to removal in a future version.
-
Method Details
-
acquireExclusiveTopologyLock
void acquireExclusiveTopologyLock() -
releaseExclusiveTopologyLock
void releaseExclusiveTopologyLock() -
notifyTransactionDataReceived
void notifyTransactionDataReceived(int topologyId) -
transactionDataFuture
- Returns:
- a stage that completes successfully when topology
expectedTopologyIdhas been installed and transaction data has been received, or with aTimeoutExceptionafterClusteringConfiguration.remoteTimeout()expires.
-
transactionDataReceived
boolean transactionDataReceived(int expectedTopologyId) -
notifyTopologyInstalled
void notifyTopologyInstalled(int topologyId) -
topologyFuture
- Returns:
- a stage that completes successfully when topology
expectedTopologyIdhas been installed, or with aTimeoutExceptionafterStateTransferConfiguration.timeout()expires.
-
waitForTopology
@Deprecated(forRemoval=true, since="9.0") default void waitForTopology(int expectedTopologyId, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException Deprecated, for removal: This API element is subject to removal in a future version.- Throws:
InterruptedExceptionTimeoutException
-
topologyReceived
boolean topologyReceived(int expectedTopologyId)
-