/** * Loads defaults and creates DefaultRateLimiter. * * @throws SystemConfigException If any parameters fail to load */ public DefaultRateLimiter() throws SystemConfigException { // Load limits requestLimitGlobal = SYSTEM_CONFIG.getIntProperty(REQUEST_LIMIT_GLOBAL_KEY, DEFAULT_REQUEST_LIMIT_GLOBAL); requestLimitPerUser = SYSTEM_CONFIG.getIntProperty(REQUEST_LIMIT_PER_USER_KEY, DEFAULT_REQUEST_LIMIT_PER_USER); requestLimitUi = SYSTEM_CONFIG.getIntProperty(REQUEST_LIMIT_UI_KEY, DEFAULT_REQUEST_LIMIT_UI); // Register counters for currently active requests usersCounter = REGISTRY.counter("ratelimit.count.users"); requestGlobalCounter = REGISTRY.counter("ratelimit.count.global"); // Register meters for number of requests requestUserMeter = REGISTRY.meter("ratelimit.meter.request.user"); requestUiMeter = REGISTRY.meter("ratelimit.meter.request.ui"); requestBypassMeter = REGISTRY.meter("ratelimit.meter.request.bypass"); rejectUserMeter = REGISTRY.meter("ratelimit.meter.reject.user"); rejectUiMeter = REGISTRY.meter("ratelimit.meter.reject.ui"); }
/** * Get instance pointing to a search provider. This method makes sure that there just one instance of search * provider for a given dimension. * * @param providerName name unique identifier for search provider instances * * @return The search provider instance */ public static synchronized SearchProvider getInstance(String providerName) { NoOpSearchProvider noOpProvider = noOpProviders.get(providerName); if (noOpProvider == null) { noOpProvider = new NoOpSearchProvider( SYSTEM_CONFIG.getIntProperty(QueryWeightUtil.QUERY_WEIGHT_LIMIT_KEY, DEFAULT_QUERY_WEIGHT_LIMIT) ); noOpProviders.put(providerName, noOpProvider); } return noOpProvider; }
/** * Get the Druid response timeout value for the given system property. * * @param timeOutSysProp The system property to read the timeout from * * @return the timeout */ private static Integer fetchDruidResponseTimeOut(String timeOutSysProp) { try { return SYSTEM_CONFIG.getIntProperty(timeOutSysProp, DRUID_REQUEST_TIMEOUT_DEFAULT); } catch (SystemConfigException e) { LOG.error(e.getMessage(), e); throw new RuntimeException(e.getMessage(), e); } }