summaryrefslogtreecommitdiffstats
path: root/vespa-feed-client/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-06-21 10:28:11 +0200
committerJon Marius Venstad <venstad@gmail.com>2021-06-21 10:28:11 +0200
commite9adb4415c46134864c392ef05ee2fd0a4f7062c (patch)
treec89ba025c0bc470f323f5c1001f336320f04a86b /vespa-feed-client/src
parentcae18255a54eadc1d7949dd3564a8cc9a6056c75 (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.java8
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;