Class RateLimiter

java.lang.Object
org.apache.lucene.store.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.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Simple class to rate limit IO.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract double
    The current mb per second rate limit.
    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 Details

    • RateLimiter

      public RateLimiter()
  • Method Details

    • 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