Class LearnerSyncThrottler
- java.lang.Object
 - 
- org.apache.zookeeper.server.quorum.LearnerSyncThrottler
 
 
- 
public class LearnerSyncThrottler extends Object
Utility class to limit the number of concurrent syncs from a leader to observers and followers or from a follower to observers.LearnerHandlerobjects should callbeginSync(boolean)before sending a sync andendSync()after finishing, successfully or not. 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static classLearnerSyncThrottler.SyncType 
- 
Constructor Summary
Constructors Constructor Description LearnerSyncThrottler(int maxConcurrentSyncs, LearnerSyncThrottler.SyncType syncType)Constructs a new instance limiting the concurrent number of syncs tomaxConcurrentSyncs. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbeginSync(boolean essential)Indicates that a new sync is about to be sent.voidendSync()Indicates that a sync has been completed.intgetSyncInProgress()voidsetMaxConcurrentSyncs(int maxConcurrentSyncs) 
 - 
 
- 
- 
Constructor Detail
- 
LearnerSyncThrottler
public LearnerSyncThrottler(int maxConcurrentSyncs, LearnerSyncThrottler.SyncType syncType) throws IllegalArgumentExceptionConstructs a new instance limiting the concurrent number of syncs tomaxConcurrentSyncs.- Parameters:
 maxConcurrentSyncs- maximum concurrent number of syncssyncType- either a snapshot sync or a txn-based diff sync- Throws:
 IllegalArgumentException- whenmaxConcurrentSyncsis less than 1
 
 - 
 
- 
Method Detail
- 
beginSync
protected void beginSync(boolean essential) throws SyncThrottleException, InterruptedExceptionIndicates that a new sync is about to be sent.- Parameters:
 essential- iftrue, do not throw an exception even if throttling limit is reached- Throws:
 SyncThrottleException- if throttling limit has been exceeded andessential == false, even after waiting for the timeout period, if anyInterruptedException- if thread is interrupted while trying to start a sync; cannot happen if timeout is zero
 
- 
endSync
public void endSync()
Indicates that a sync has been completed. 
- 
setMaxConcurrentSyncs
public void setMaxConcurrentSyncs(int maxConcurrentSyncs)
 
- 
getSyncInProgress
public int getSyncInProgress()
 
 - 
 
 -