/** * @param tableId table id of the table to be rate limited * @param rateLimiter actual rate limiter instance to be used * @param creditFn function for deriving the credits for each request * @param tag tag to be used with the rate limiter */ public TableRateLimiter(String tableId, RateLimiter rateLimiter, CreditFunction<K, V> creditFn, String tag) { this.rateLimiter = rateLimiter; this.creditFn = creditFn; this.tag = tag; this.rateLimited = rateLimiter != null && rateLimiter.getSupportedTags().contains(tag); LOG.info("Rate limiting is {} for {}", rateLimited ? "enabled" : "disabled", tableId); }
/** * @param tableId table id of the table to be rate limited * @param rateLimiter actual rate limiter instance to be used * @param creditFn function for deriving the credits for each request * @param tag tag to be used with the rate limiter */ public TableRateLimiter(String tableId, RateLimiter rateLimiter, CreditFunction<K, V> creditFn, String tag) { this.rateLimiter = rateLimiter; this.creditFn = creditFn; this.tag = tag; this.rateLimited = rateLimiter != null && rateLimiter.getSupportedTags().contains(tag); LOG.info("Rate limiting is {} for {}", rateLimited ? "enabled" : "disabled", tableId); }
/** * @param tableId table id of the table to be rate limited * @param rateLimiter actual rate limiter instance to be used * @param creditFn function for deriving the credits for each request * @param tag tag to be used with the rate limiter */ public TableRateLimiter(String tableId, RateLimiter rateLimiter, CreditFunction<K, V> creditFn, String tag) { this.rateLimiter = rateLimiter; this.creditFn = creditFn; this.tag = tag; this.rateLimited = rateLimiter != null && rateLimiter.getSupportedTags().contains(tag); LOG.info("Rate limiting is {} for {}", rateLimited ? "enabled" : "disabled", tableId); }
/** * @param tableId table id of the table to be rate limited * @param rateLimiter actual rate limiter instance to be used * @param creditFn function for deriving the credits for each request * @param tag tag to be used with the rate limiter */ public TableRateLimiter(String tableId, RateLimiter rateLimiter, CreditFunction<K, V> creditFn, String tag) { this.rateLimiter = rateLimiter; this.creditFn = creditFn; this.tag = tag; this.rateLimited = rateLimiter != null && rateLimiter.getSupportedTags().contains(tag); LOG.info("Rate limiting is {} for {}", rateLimited ? "enabled" : "disabled", tableId); }
/** * @param tableId table id of the table to be rate limited * @param rateLimiter actual rate limiter instance to be used * @param creditFn function for deriving the credits for each request * @param tag tag to be used with the rate limiter */ public TableRateLimiter(String tableId, RateLimiter rateLimiter, CreditFunction<K, V> creditFn, String tag) { Preconditions.checkNotNull(rateLimiter); Preconditions.checkArgument(rateLimiter.getSupportedTags().contains(tag), String.format("Rate limiter for table %s doesn't support %s", tableId, tag)); this.rateLimiter = rateLimiter; this.creditFn = creditFn; this.tag = tag; }
public TableRateLimiter<String, String> getThrottler(String tag) { TableRateLimiter.CreditFunction<String, String> credFn = (TableRateLimiter.CreditFunction<String, String>) (key, value) -> { int credits = key == null ? 0 : 3; credits += value == null ? 0 : 3; return credits; }; RateLimiter rateLimiter = mock(RateLimiter.class); doReturn(Collections.singleton(tag)).when(rateLimiter).getSupportedTags(); TableRateLimiter<String, String> rateLimitHelper = new TableRateLimiter<>("foo", rateLimiter, credFn, tag); Timer timer = mock(Timer.class); rateLimitHelper.setTimerMetric(timer); return rateLimitHelper; }
TableRateLimiter readRateLimiter = rateLimiter != null && rateLimiter.getSupportedTags().contains(RemoteTableDescriptor.RL_READ_TAG) ? new TableRateLimiter(tableId, rateLimiter, readCreditFn, RemoteTableDescriptor.RL_READ_TAG) : null; if (writeFn != null) { TableRateLimiter.CreditFunction<?, ?> writeCreditFn = deserializeObject(tableConfig, RemoteTableDescriptor.WRITE_CREDIT_FN); writeRateLimiter = rateLimiter != null && rateLimiter.getSupportedTags().contains(RemoteTableDescriptor.RL_WRITE_TAG) ? new TableRateLimiter(tableId, rateLimiter, writeCreditFn, RemoteTableDescriptor.RL_WRITE_TAG) : null;