Package org.apache.lucene.store
Class RateLimiter
- java.lang.Object
-
- org.apache.lucene.store.RateLimiter
-
- Direct Known Subclasses:
MergeRateLimiter
,RateLimiter.SimpleRateLimiter
public abstract class RateLimiter extends Object
Abstract base class to rate limit IO. Typically implementations are shared across multiple IndexInputs or IndexOutputs (for example those involved all merging). Those IndexInputs and IndexOutputs would callpause(long)
whenever the have read or written more thangetMinPauseCheckBytes()
bytes.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RateLimiter.SimpleRateLimiter
Simple class to rate limit IO.
-
Constructor Summary
Constructors Constructor Description RateLimiter()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description abstract double
getMBPerSec()
The current MB per second rate limit.abstract long
getMinPauseCheckBytes()
How many bytes caller should add up itself before invokingpause(long)
.abstract long
pause(long bytes)
Pauses, if necessary, to keep the instantaneous IO rate at or below the target.abstract void
setMBPerSec(double mbPerSec)
Sets an updated MB per second rate limit.
-
-
-
Method Detail
-
setMBPerSec
public abstract void setMBPerSec(double mbPerSec)
Sets an updated MB per second rate limit.
-
getMBPerSec
public abstract double getMBPerSec()
The current MB per second rate limit.
-
pause
public abstract long pause(long bytes) throws IOException
Pauses, if necessary, to keep the instantaneous IO rate at or below the target.Note: the implementation is thread-safe
- Returns:
- the pause time in nano seconds
- Throws:
IOException
-
getMinPauseCheckBytes
public abstract long getMinPauseCheckBytes()
How many bytes caller should add up itself before invokingpause(long)
.
-
-