Class RateLimiter

  • Direct Known Subclasses:
    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 they want to read bytes or write bytes.
    • Constructor Detail

      • RateLimiter

        public RateLimiter()
    • 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)
        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