Class RateLimitManager

java.lang.Object
org.apache.solr.servlet.RateLimitManager
All Implemented Interfaces:
org.apache.solr.common.cloud.ClusterPropertiesListener

@ThreadSafe public class RateLimitManager extends Object implements org.apache.solr.common.cloud.ClusterPropertiesListener
This class is responsible for managing rate limiting per request type. Rate limiters can be registered with this class against a corresponding type. There can be only one rate limiter associated with a request type.

The actual rate limiting and the limits should be implemented in the corresponding RequestRateLimiter implementation. RateLimitManager is responsible for the orchestration but not the specifics of how the rate limiting is being done for a specific request type.

  • Field Details

  • Constructor Details

    • RateLimitManager

      public RateLimitManager()
  • Method Details

    • onChange

      public boolean onChange(Map<String,Object> properties)
      Specified by:
      onChange in interface org.apache.solr.common.cloud.ClusterPropertiesListener
    • handleRequest

      public RequestRateLimiter.SlotReservation handleRequest(jakarta.servlet.http.HttpServletRequest request) throws InterruptedException
      Throws:
      InterruptedException
    • registerRequestRateLimiter

      public void registerRequestRateLimiter(RequestRateLimiter requestRateLimiter, org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType)
    • getRequestRateLimiter

      public RequestRateLimiter getRequestRateLimiter(org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType)