/** * Execute an async request given a collection of table keys * @param rateLimiter helper for rate limiting * @param keys collection of keys * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, Collection<K> keys, Function<Collection<K>, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(keys), tableExecutor) .thenCompose((r) -> method.apply(keys)) : method.apply(keys); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table record (key+value) * @param rateLimiter helper for rate limiting * @param key key of the table record * @param value value of the table record * @param method method to be executed * @param timer latency metric to be updated * @return CompletableFuture of the operation */ protected CompletableFuture<Void> execute(TableRateLimiter<K, V> rateLimiter, K key, V value, BiFunction<K, V, CompletableFuture<Void>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key, value), tableExecutor) .thenCompose((r) -> method.apply(key, value)) : method.apply(key, value); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table key * @param rateLimiter helper for rate limiting * @param key key of the table record * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, K key, Function<K, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key), tableExecutor) .thenCompose((r) -> method.apply(key)) : method.apply(key); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a collection of table keys * @param rateLimiter helper for rate limiting * @param keys collection of keys * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, Collection<K> keys, Function<Collection<K>, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(keys), tableExecutor) .thenCompose((r) -> method.apply(keys)) : method.apply(keys); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table key * @param rateLimiter helper for rate limiting * @param key key of the table record * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, K key, Function<K, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key), tableExecutor) .thenCompose((r) -> method.apply(key)) : method.apply(key); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture; if (rateLimiter.isRateLimited()) { ioFuture = CompletableFuture .runAsync(() -> rateLimiter.throttleRecords(records), tableExecutor)
final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture; if (rateLimiter.isRateLimited()) { ioFuture = CompletableFuture .runAsync(() -> rateLimiter.throttleRecords(records), tableExecutor)
/** * Execute an async request given a table record (key+value) * @param rateLimiter helper for rate limiting * @param key key of the table record * @param value value of the table record * @param method method to be executed * @param timer latency metric to be updated * @return CompletableFuture of the operation */ protected CompletableFuture<Void> execute(TableRateLimiter<K, V> rateLimiter, K key, V value, BiFunction<K, V, CompletableFuture<Void>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key, value), tableExecutor) .thenCompose((r) -> method.apply(key, value)) : method.apply(key, value); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a collection of table keys * @param rateLimiter helper for rate limiting * @param keys collection of keys * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, Collection<K> keys, Function<Collection<K>, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(keys), tableExecutor) .thenCompose((r) -> method.apply(keys)) : method.apply(keys); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table key * @param rateLimiter helper for rate limiting * @param key key of the table record * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, K key, Function<K, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key), tableExecutor) .thenCompose((r) -> method.apply(key)) : method.apply(key); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table key * @param rateLimiter helper for rate limiting * @param key key of the table record * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, K key, Function<K, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key), tableExecutor) .thenCompose((r) -> method.apply(key)) : method.apply(key); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a collection of table keys * @param rateLimiter helper for rate limiting * @param keys collection of keys * @param method method to be executed * @param timer latency metric to be updated * @param <T> return type * @return CompletableFuture of the operation */ protected <T> CompletableFuture<T> execute(TableRateLimiter<K, V> rateLimiter, Collection<K> keys, Function<Collection<K>, CompletableFuture<T>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<T> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(keys), tableExecutor) .thenCompose((r) -> method.apply(keys)) : method.apply(keys); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table record (key+value) * @param rateLimiter helper for rate limiting * @param key key of the table record * @param value value of the table record * @param method method to be executed * @param timer latency metric to be updated * @return CompletableFuture of the operation */ protected CompletableFuture<Void> execute(TableRateLimiter<K, V> rateLimiter, K key, V value, BiFunction<K, V, CompletableFuture<Void>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key, value), tableExecutor) .thenCompose((r) -> method.apply(key, value)) : method.apply(key, value); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
/** * Execute an async request given a table record (key+value) * @param rateLimiter helper for rate limiting * @param key key of the table record * @param value value of the table record * @param method method to be executed * @param timer latency metric to be updated * @return CompletableFuture of the operation */ protected CompletableFuture<Void> execute(TableRateLimiter<K, V> rateLimiter, K key, V value, BiFunction<K, V, CompletableFuture<Void>> method, Timer timer) { final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture = rateLimiter.isRateLimited() ? CompletableFuture .runAsync(() -> rateLimiter.throttle(key, value), tableExecutor) .thenCompose((r) -> method.apply(key, value)) : method.apply(key, value); if (callbackExecutor != null) { ioFuture.thenApplyAsync(r -> { timer.update(System.nanoTime() - startNs); return r; }, callbackExecutor); } else { ioFuture.thenApply(r -> { timer.update(System.nanoTime() - startNs); return r; }); } return ioFuture; }
final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture; if (rateLimiter.isRateLimited()) { ioFuture = CompletableFuture .runAsync(() -> rateLimiter.throttleRecords(records), tableExecutor)
final long startNs = System.nanoTime(); CompletableFuture<Void> ioFuture; if (rateLimiter.isRateLimited()) { ioFuture = CompletableFuture .runAsync(() -> rateLimiter.throttleRecords(records), tableExecutor)
boolean isRateLimited = readRateLimiter.isRateLimited(); if (!readOnly) { writeCreditFn = deserializeObject(WRITE_CREDIT_FN); writeRateLimiter = new TableRateLimiter(tableSpec.getId(), rateLimiter, writeCreditFn, RemoteTableDescriptor.RL_WRITE_TAG); isRateLimited |= writeRateLimiter.isRateLimited(); writeRetryPolicy = deserializeObject(WRITE_RETRY_POLICY); if (writeRetryPolicy != null) {
boolean isRateLimited = readRateLimiter.isRateLimited(); if (!readOnly) { writeCreditFn = deserializeObject(WRITE_CREDIT_FN); writeRateLimiter = new TableRateLimiter(tableSpec.getId(), rateLimiter, writeCreditFn, RemoteTableDescriptor.RL_WRITE_TAG); isRateLimited |= writeRateLimiter.isRateLimited(); writeRetryPolicy = deserializeObject(WRITE_RETRY_POLICY); if (writeRetryPolicy != null) {
boolean isRateLimited = readRateLimiter.isRateLimited(); if (!readOnly) { writeCreditFn = deserializeObject(WRITE_CREDIT_FN); writeRateLimiter = new TableRateLimiter(tableSpec.getId(), rateLimiter, writeCreditFn, RemoteTableDescriptor.RL_WRITE_TAG); isRateLimited |= writeRateLimiter.isRateLimited(); writeRetryPolicy = deserializeObject(WRITE_RETRY_POLICY); if (writeRetryPolicy != null) {
boolean isRateLimited = readRateLimiter.isRateLimited(); if (!readOnly) { writeCreditFn = deserializeObject(WRITE_CREDIT_FN); writeRateLimiter = new TableRateLimiter(tableSpec.getId(), rateLimiter, writeCreditFn, RemoteTableDescriptor.RL_WRITE_TAG); isRateLimited |= writeRateLimiter.isRateLimited(); writeRetryPolicy = deserializeObject(WRITE_RETRY_POLICY); if (writeRetryPolicy != null) {