Package org.apache.lucene.index
Class MergeRateLimiter
java.lang.Object
org.apache.lucene.store.RateLimiter
org.apache.lucene.index.MergeRateLimiter
This is the
RateLimiter
that IndexWriter
assigns to each running merge, to give
MergeScheduler
s ionice like control.-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.store.RateLimiter
RateLimiter.SimpleRateLimiter
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
private static final long
private double
private final MergePolicy.OneMergeProgress
private static final int
private static final long
private long
private AtomicLong
-
Constructor Summary
ConstructorsConstructorDescriptionMergeRateLimiter
(MergePolicy.OneMergeProgress mergeProgress) Sole constructor. -
Method Summary
Modifier and TypeMethodDescriptiondouble
The current MB per second rate limit.long
How many bytes caller should add up itself before invokingRateLimiter.pause(long)
.long
Returns total bytes written by this merge.long
Total NS merge was paused to rate limit IO.long
Total NS merge was stopped.private long
maybePause
(long bytes, long curNS) Returns the number of nanoseconds spent in a paused state or-1
if no pause was applied.long
pause
(long bytes) Pauses, if necessary, to keep the instantaneous IO rate at or below the target.void
setMBPerSec
(double mbPerSec) Sets an updated MB per second rate limit.
-
Field Details
-
MIN_PAUSE_CHECK_MSEC
private static final int MIN_PAUSE_CHECK_MSEC- See Also:
-
MIN_PAUSE_NS
private static final long MIN_PAUSE_NS -
MAX_PAUSE_NS
private static final long MAX_PAUSE_NS -
mbPerSec
private volatile double mbPerSec -
minPauseCheckBytes
private volatile long minPauseCheckBytes -
lastNS
private long lastNS -
totalBytesWritten
-
mergeProgress
-
-
Constructor Details
-
MergeRateLimiter
Sole constructor.
-
-
Method Details
-
setMBPerSec
public void setMBPerSec(double mbPerSec) Description copied from class:RateLimiter
Sets an updated MB per second rate limit. A subclass is allowed to perform dynamic updates of the rate limit during use.- Specified by:
setMBPerSec
in classRateLimiter
-
getMBPerSec
public double getMBPerSec()Description copied from class:RateLimiter
The current MB per second rate limit.- Specified by:
getMBPerSec
in classRateLimiter
-
getTotalBytesWritten
public long getTotalBytesWritten()Returns total bytes written by this merge. -
pause
Description copied from class:RateLimiter
Pauses, if necessary, to keep the instantaneous IO rate at or below the target.Note: the implementation is thread-safe
- Specified by:
pause
in classRateLimiter
- Returns:
- the pause time in nano seconds
- Throws:
MergePolicy.MergeAbortedException
-
getTotalStoppedNS
public long getTotalStoppedNS()Total NS merge was stopped. -
getTotalPausedNS
public long getTotalPausedNS()Total NS merge was paused to rate limit IO. -
maybePause
Returns the number of nanoseconds spent in a paused state or-1
if no pause was applied. If the thread needs pausing, this method delegates to the linkedMergePolicy.OneMergeProgress
. -
getMinPauseCheckBytes
public long getMinPauseCheckBytes()Description copied from class:RateLimiter
How many bytes caller should add up itself before invokingRateLimiter.pause(long)
. NOTE: The value returned by this method may change over time and is not guaranteed to be constant throughout the lifetime of the RateLimiter. Users are advised to refresh their local values with calls to this method to ensure consistency.- Specified by:
getMinPauseCheckBytes
in classRateLimiter
-