diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-06-21 10:28:11 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-06-21 10:28:11 +0200 |
commit | e9adb4415c46134864c392ef05ee2fd0a4f7062c (patch) | |
tree | c89ba025c0bc470f323f5c1001f336320f04a86b /vespa-feed-client/src | |
parent | cae18255a54eadc1d7949dd3564a8cc9a6056c75 (diff) |
Update abi spec, and simplify
Diffstat (limited to 'vespa-feed-client/src')
-rw-r--r-- | vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java index 53e2ece3125..ad6f7225ee8 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java @@ -22,14 +22,14 @@ public class DynamicThrottler extends StaticThrottler { private final AtomicLong targetInflight; private long updateNanos = 0; - private final List<AtomicReference<Double>> latencies = new ArrayList<>(); + private final List<AtomicLong> latencies = new ArrayList<>(); private final double weight = 0.8; // Higher weight favours higher (own) throughput, at the cost of (shared) latency. public DynamicThrottler(FeedClientBuilder builder) { super(builder); this.targetInflight = new AtomicLong(128L * builder.connectionsPerEndpoint * builder.endpoints.size()); for (int i = 0; i < 128; i++) - latencies.add(new AtomicReference<>(-1.0)); + latencies.add(new AtomicLong(-1)); } @Override @@ -46,9 +46,7 @@ public class DynamicThrottler extends StaticThrottler { / log(256)); // 4096 (server max streams per connection) / 16 (our min per connection) long nowNanos = System.nanoTime(); long latencyNanos = nowNanos - startNanos; - double w1 = 1e-2; // Update values with some of the new measurement, some of the old. - double w2 = response != null && response.code() / 100 == 2 ? 1 - w1 : 1; // Punish non-successes. - latencies.get(index).updateAndGet(latency -> latency < 0 ? latencyNanos : latencyNanos * w1 + latency * w2); + latencies.get(index).set(latencyNanos); if ( ! update) return; |