Class 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 Detail

      • DEFAULT_CONCURRENT_REQUESTS

        public static final int DEFAULT_CONCURRENT_REQUESTS
      • DEFAULT_SLOT_ACQUISITION_TIMEOUT_MS

        public static final long DEFAULT_SLOT_ACQUISITION_TIMEOUT_MS
        See Also:
        Constant Field Values
    • Constructor Detail

      • RateLimitManager

        public RateLimitManager()
    • Method Detail

      • onChange

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

        public void decrementActiveRequests​(javax.servlet.http.HttpServletRequest request)
      • 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)