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 call `pause(long)` whenever the have read or written more than `getMinPauseCheckBytes()` bytes.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RateLimiter.SimpleRateLimiter` Simple class to rate limit IO.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RateLimiter()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract double` | `getMBPerSec()` The current MB per second rate limit.
    `abstract long` | `getMinPauseCheckBytes()` How many bytes caller should add up itself before invoking `pause(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.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RateLimiter

          public RateLimiter()

  - ### Method Detail

    - #### setMBPerSec

          public abstract void setMBPerSec(double mbPerSec)

      Sets an updated MB per second rate limit. A subclass is allowed to perform dynamic updates of the rate limit during use.

    - #### 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 invoking `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.

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.