aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2022-08-12 21:27:05 +0200
committerGitHub <noreply@github.com>2022-08-12 21:27:05 +0200
commit44b750efdb83be18d839ffc5495c4e02b87e0b0e (patch)
tree57ed2ba63feecb095844b9bc89c889d47b2faad8
parent43830a7f7975080dbc4c25804a2506ab102c7868 (diff)
parentec64add133a3b25900fd25a266a2497e757f809e (diff)
Merge pull request #23647 from vespa-engine/balder/use-duration-as-timeout
Add method to use Duration as timeout to make unit explicit, and avoi…
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java41
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java17
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java12
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java47
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java8
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java6
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/Connection.java6
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/JRTConnection.java5
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java3
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java4
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java11
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java4
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java4
-rw-r--r--jrt/src/com/yahoo/jrt/Connection.java3
-rw-r--r--jrt/src/com/yahoo/jrt/Target.java17
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java3
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/Register.java3
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java3
-rw-r--r--jrt/src/com/yahoo/jrt/tool/RpcInvoker.java3
-rw-r--r--jrt/tests/com/yahoo/jrt/AbortTest.java6
-rw-r--r--jrt/tests/com/yahoo/jrt/BackTargetTest.java18
-rw-r--r--jrt/tests/com/yahoo/jrt/DetachTest.java8
-rw-r--r--jrt/tests/com/yahoo/jrt/EchoTest.java3
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java6
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeErrorTest.java4
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeSyncTest.java5
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeVoidTest.java6
-rw-r--r--jrt/tests/com/yahoo/jrt/LatencyTest.java3
-rw-r--r--jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java7
-rw-r--r--jrt/tests/com/yahoo/jrt/TimeoutTest.java8
-rw-r--r--logserver/src/test/java/ai/vespa/logserver/protocol/ArchiveLogMessagesMethodTest.java3
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java3
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java7
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java4
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java3
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java3
47 files changed, 190 insertions, 135 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
index 502fc37dead..e223ad12fb9 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
@@ -22,6 +22,8 @@ import com.yahoo.vespa.clustercontroller.core.GetNodeStateRequest;
import com.yahoo.vespa.clustercontroller.core.NodeInfo;
import com.yahoo.vespa.clustercontroller.core.SetClusterStateRequest;
import com.yahoo.vespa.clustercontroller.core.Timer;
+
+import java.time.Duration;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -46,10 +48,10 @@ public class RPCCommunicator implements Communicator {
private final Timer timer;
private final Supervisor supervisor;
- private double nodeStateRequestTimeoutIntervalMaxSeconds;
+ private Duration nodeStateRequestTimeoutIntervalMax;
private int nodeStateRequestTimeoutIntervalStartPercentage;
private int nodeStateRequestTimeoutIntervalStopPercentage;
- private int nodeStateRequestRoundTripTimeMaxSeconds;
+ private Duration nodeStateRequestRoundTripTimeMax;
private final int fleetControllerIndex;
public static Supervisor createRealSupervisor() {
@@ -72,10 +74,10 @@ public class RPCCommunicator implements Communicator {
checkArgument(nodeStateRequestTimeoutIntervalStopPercentage >= nodeStateRequestTimeoutIntervalStartPercentage);
checkArgument(nodeStateRequestTimeoutIntervalStopPercentage <= 100);
checkArgument(nodeStateRequestRoundTripTimeMaxSeconds >= 0);
- this.nodeStateRequestTimeoutIntervalMaxSeconds = nodeStateRequestTimeoutIntervalMaxMs / 1000D;
+ this.nodeStateRequestTimeoutIntervalMax = Duration.ofMillis(nodeStateRequestTimeoutIntervalMaxMs);
this.nodeStateRequestTimeoutIntervalStartPercentage = nodeStateRequestTimeoutIntervalStartPercentage;
this.nodeStateRequestTimeoutIntervalStopPercentage = nodeStateRequestTimeoutIntervalStopPercentage;
- this.nodeStateRequestRoundTripTimeMaxSeconds = nodeStateRequestRoundTripTimeMaxSeconds;
+ this.nodeStateRequestRoundTripTimeMax = Duration.ofSeconds(nodeStateRequestRoundTripTimeMaxSeconds);
this.supervisor = supervisor;
}
@@ -100,10 +102,10 @@ public class RPCCommunicator implements Communicator {
>= options.nodeStateRequestTimeoutEarliestPercentage);
checkArgument(options.nodeStateRequestTimeoutLatestPercentage <= 100);
checkArgument(options.nodeStateRequestRoundTripTimeMaxSeconds >= 0);
- this.nodeStateRequestTimeoutIntervalMaxSeconds = options.nodeStateRequestTimeoutMS / 1000.0;
+ this.nodeStateRequestTimeoutIntervalMax = Duration.ofMillis(options.nodeStateRequestTimeoutMS);
this.nodeStateRequestTimeoutIntervalStartPercentage = options.nodeStateRequestTimeoutEarliestPercentage;
this.nodeStateRequestTimeoutIntervalStopPercentage = options.nodeStateRequestTimeoutLatestPercentage;
- this.nodeStateRequestRoundTripTimeMaxSeconds = options.nodeStateRequestRoundTripTimeMaxSeconds;
+ this.nodeStateRequestRoundTripTimeMax = Duration.ofSeconds(options.nodeStateRequestRoundTripTimeMaxSeconds);
}
@Override
@@ -117,16 +119,15 @@ public class RPCCommunicator implements Communicator {
req.parameters().add(new StringValue(
currentState.getState().equals(State.DOWN) || node.getConnectionAttemptCount() > 0
? "unknown" : currentState.serialize()));
- req.parameters().add(new Int32Value(generateNodeStateRequestTimeoutMs()));
+ req.parameters().add(new Int32Value((int)generateNodeStateRequestTimeout().toMillis()));
req.parameters().add(new Int32Value(fleetControllerIndex));
RPCGetNodeStateRequest stateRequest = new RPCGetNodeStateRequest(node, req);
RPCGetNodeStateWaiter waiter = new RPCGetNodeStateWaiter(stateRequest, externalWaiter, timer);
- double requestTimeoutSeconds =
- nodeStateRequestTimeoutIntervalMaxSeconds + nodeStateRequestRoundTripTimeMaxSeconds;
+ Duration requestTimeout = nodeStateRequestTimeoutIntervalMax.plus(nodeStateRequestRoundTripTimeMax);
- connection.invokeAsync(req, requestTimeoutSeconds, waiter);
+ connection.invokeAsync(req, requestTimeout, waiter);
node.setCurrentNodeStateRequest(stateRequest, timer.getCurrentTimeInMillis());
node.lastRequestInfoConnection = connection;
}
@@ -161,7 +162,7 @@ public class RPCCommunicator implements Communicator {
RPCSetClusterStateRequest stateRequest = new RPCSetClusterStateRequest(node, req, baselineState.getVersion());
waiter.setRequest(stateRequest);
- connection.invokeAsync(req, 60, waiter);
+ connection.invokeAsync(req, Duration.ofSeconds(60), waiter);
node.setClusterStateVersionBundleSent(stateBundle);
}
@@ -183,20 +184,20 @@ public class RPCCommunicator implements Communicator {
var activationRequest = new RPCActivateClusterStateVersionRequest(node, req, clusterStateVersion);
waiter.setRequest(activationRequest);
- connection.invokeAsync(req, 60, waiter);
+ connection.invokeAsync(req, Duration.ofSeconds(60), waiter);
node.setClusterStateVersionActivationSent(clusterStateVersion);
}
// protected for testing.
- protected int generateNodeStateRequestTimeoutMs() {
+ protected Duration generateNodeStateRequestTimeout() {
double intervalFraction = Math.random();
- double earliestTimeoutSeconds =
- nodeStateRequestTimeoutIntervalMaxSeconds * nodeStateRequestTimeoutIntervalStartPercentage / 100.0;
- double latestTimeoutSeconds =
- nodeStateRequestTimeoutIntervalMaxSeconds * nodeStateRequestTimeoutIntervalStopPercentage / 100.0;
- double interval = latestTimeoutSeconds - earliestTimeoutSeconds;
- double timeoutSeconds = earliestTimeoutSeconds + intervalFraction * interval;
- return (int) (timeoutSeconds * 1000);
+ long earliestTimeoutNanos =
+ nodeStateRequestTimeoutIntervalMax.toNanos() * nodeStateRequestTimeoutIntervalStartPercentage / 100;
+ long latestTimeoutNanos =
+ nodeStateRequestTimeoutIntervalMax.toNanos() * nodeStateRequestTimeoutIntervalStopPercentage / 100;
+ long interval = latestTimeoutNanos - earliestTimeoutNanos;
+ long timeoutNanos = earliestTimeoutNanos + (long)(intervalFraction * interval);
+ return Duration.ofNanos(timeoutNanos);
}
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
index 42bcfaac477..9a6a9e063ac 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
@@ -154,7 +154,7 @@ public class DatabaseTest extends FleetControllerTest {
Request req = new Request("setNodeState");
req.parameters().add(new StringValue("storage/cluster.mycluster/" + n.getType().toString() + "/" + n.getIndex()));
req.parameters().add(new StringValue(ns.serialize(true)));
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
assertEquals(ErrorCode.NONE, req.errorCode(), req.toString());
assertTrue(req.checkReturnTypes("s"), req.toString());
wantedStates.put(n, ns);
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
index 41ae2b37411..371a57e08c0 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
@@ -460,7 +460,7 @@ public abstract class FleetControllerTest implements Waiter {
Request req = new Request("setNodeState");
req.parameters().add(new StringValue(node.getSlobrokName()));
req.parameters().add(new StringValue(ns.serialize()));
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
if (req.isError()) {
fail("Failed to invoke setNodeState(): " + req.errorCode() + ": " + req.errorMessage());
}
@@ -477,6 +477,4 @@ public abstract class FleetControllerTest implements Waiter {
Duration timeout() { return timeout; }
- double timeoutInSeconds() { return (double) timeout.toMillis() / 1000; }
-
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
index 05a06a92e27..16a3e41f149 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
@@ -313,7 +313,7 @@ public class MasterElectionTest extends FleetControllerTest {
boolean allOk = true;
for (int node : nodes) {
Request req = new Request("getMaster");
- connections.get(node).invokeSync(req, timeoutInSeconds());
+ connections.get(node).invokeSync(req, timeout());
if (req.isError()) {
allOk = false;
break;
@@ -355,10 +355,11 @@ public class MasterElectionTest extends FleetControllerTest {
Request req = new Request("getMaster");
+ long maxRetries = timeout().toMillis() / 100;
for (int nodeIndex = 0; nodeIndex < 3; ++nodeIndex) {
- for (int retry = 0; retry < timeoutInSeconds() * 10; ++retry) {
+ for (int retry = 0; retry < maxRetries; ++retry) {
req = new Request("getMaster");
- connections.get(nodeIndex).invokeSync(req, timeoutInSeconds());
+ connections.get(nodeIndex).invokeSync(req, timeout());
assertFalse(req.isError(), req.errorMessage());
if (req.returnValues().get(0).asInt32() == 0 &&
req.returnValues().get(1).asString().equals("All 3 nodes agree that 0 is current master.")) {
@@ -389,13 +390,13 @@ public class MasterElectionTest extends FleetControllerTest {
waitForMaster(1);
req = new Request("getMaster");
- connections.get(0).invokeSync(req, timeoutInSeconds());
+ connections.get(0).invokeSync(req, timeout());
assertEquals(104, req.errorCode(), req.toString());
assertEquals("Connection error", req.errorMessage(), req.toString());
- for (int i = 0; i < timeoutInSeconds() * 10; ++i) {
+ for (int i = 0; i < maxRetries; ++i) {
req = new Request("getMaster");
- connections.get(1).invokeSync(req, timeoutInSeconds());
+ connections.get(1).invokeSync(req, timeout());
assertFalse(req.isError(), req.errorMessage());
if (req.returnValues().get(0).asInt32() != -1) break;
// We may have bad timing causing node not to have realized it is master yet
@@ -403,9 +404,9 @@ public class MasterElectionTest extends FleetControllerTest {
assertEquals(1, req.returnValues().get(0).asInt32(), req.toString());
assertEquals("2 of 3 nodes agree 1 is master.", req.returnValues().get(1).asString(), req.toString());
- for (int i = 0; i < timeoutInSeconds() * 10; ++i) {
+ for (int i = 0; i < maxRetries; ++i) {
req = new Request("getMaster");
- connections.get(2).invokeSync(req, timeoutInSeconds());
+ connections.get(2).invokeSync(req, timeout());
assertFalse(req.isError(), req.errorMessage());
if (req.returnValues().get(0).asInt32() != -1) break;
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
index 594a681f4b5..641f15467a6 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
@@ -127,7 +127,7 @@ public class RpcServerTest extends FleetControllerTest {
assertTrue(connection.isValid());
Request req = new Request("getSystemState");
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
assertEquals(ErrorCode.NONE, req.errorCode(), req.toString());
assertTrue(req.checkReturnTypes("ss"), req.toString());
String systemState = req.returnValues().get(1).asString();
@@ -523,7 +523,7 @@ public class RpcServerTest extends FleetControllerTest {
assertTrue(connection.isValid());
Request req = new Request("getMaster");
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
assertEquals(0, req.returnValues().get(0).asInt32(), req.toString());
assertEquals("All 1 nodes agree that 0 is current master.", req.returnValues().get(1).asString(), req.toString());
@@ -548,7 +548,7 @@ public class RpcServerTest extends FleetControllerTest {
assertTrue(connection.isValid());
Request req = new Request("getNodeList");
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
assertEquals(ErrorCode.NONE, req.errorCode(), req.errorMessage());
assertTrue(req.checkReturnTypes("SS"), req.toString());
String[] slobrok = req.returnValues().get(0).asStringArray().clone();
@@ -570,7 +570,7 @@ public class RpcServerTest extends FleetControllerTest {
Request req2 = new Request("getnodestate2");
req2.parameters().add(new StringValue("unknown"));
Target connection2 = supervisor.connect(new Spec(rpc[i]));
- connection2.invokeSync(req2, timeoutInSeconds());
+ connection2.invokeSync(req2, timeout());
assertEquals(ErrorCode.NONE, req.errorCode(), req2.toString());
}
}
@@ -583,7 +583,7 @@ public class RpcServerTest extends FleetControllerTest {
Request req = new Request("setNodeState");
req.parameters().add(new StringValue(node));
req.parameters().add(new StringValue(newNodeState));
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
return req;
}
@@ -591,7 +591,7 @@ public class RpcServerTest extends FleetControllerTest {
Request req = new Request("getNodeState");
req.parameters().add(new StringValue(nodeType));
req.parameters().add(new Int32Value(nodeIndex));
- connection.invokeSync(req, timeoutInSeconds());
+ connection.invokeSync(req, timeout());
return req;
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
index 809979620c2..b9a9d7fbf8f 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
@@ -24,15 +24,14 @@ import com.yahoo.vespa.clustercontroller.core.Timer;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
+import java.time.Duration;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNot.not;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyDouble;
@@ -60,18 +59,18 @@ public class RPCCommunicatorTest {
NODE_STATE_REQUEST_TIMEOUT_INTERVAL_START_PERCENTAGE,
NODE_STATE_REQUEST_TIMEOUT_INTERVAL_STOP_PERCENTAGE,
0);
- int max = -1;
- int min = 100000;
- final Set<Integer> uniqueTimeoutValues = new HashSet<>();
+ long max = -1;
+ long min = 100000;
+ final Set<Long> uniqueTimeoutValues = new HashSet<>();
for (int x = 0; x < TEST_ITERATIONS; x++) {
- int timeOutMs = communicator.generateNodeStateRequestTimeoutMs();
+ long timeOutMs = communicator.generateNodeStateRequestTimeout().toMillis();
min = Math.min(min, timeOutMs);
max = Math.max(max, timeOutMs);
uniqueTimeoutValues.add(timeOutMs);
}
assertTrue(max <= NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS *
NODE_STATE_REQUEST_TIMEOUT_INTERVAL_STOP_PERCENTAGE / 100.);
- assertThat(min, is(not(max)));
+ assertNotEquals(min, max);
assertTrue(min >= NODE_STATE_REQUEST_TIMEOUT_INTERVAL_START_PERCENTAGE *
NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS / 100);
assertTrue(uniqueTimeoutValues.size() > TEST_ITERATIONS / 2);
@@ -85,8 +84,8 @@ public class RPCCommunicatorTest {
fleetControllerOptions.nodeStateRequestTimeoutLatestPercentage = 100;
fleetControllerOptions.nodeStateRequestTimeoutMS = NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS;
communicator.propagateOptions(fleetControllerOptions);
- int timeOutMs = communicator.generateNodeStateRequestTimeoutMs();
- assertThat(timeOutMs, is(NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS));
+ long timeOutMs = communicator.generateNodeStateRequestTimeout().toMillis();
+ assertEquals(timeOutMs, NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS);
}
@Test
@@ -111,7 +110,7 @@ public class RPCCommunicatorTest {
communicator.getNodeState(nodeInfo, null);
Mockito.verify(target).invokeAsync(
any(),
- eq(ROUNDTRIP_LATENCY_SECONDS + NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS / 1000.0),
+ eq(Duration.ofSeconds(ROUNDTRIP_LATENCY_SECONDS).plusMillis(NODE_STATE_REQUEST_TIMEOUT_INTERVAL_MAX_MS)),
any());
}
@@ -141,7 +140,7 @@ public class RPCCommunicatorTest {
receivedRequest.set((Request) invocation.getArguments()[0]);
receivedWaiter.set((RequestWaiter) invocation.getArguments()[2]);
return null;
- }).when(mockTarget).invokeAsync(any(), anyDouble(), any());
+ }).when(mockTarget).invokeAsync(any(), any(Duration.class), any());
}
}
@@ -153,12 +152,12 @@ public class RPCCommunicatorTest {
f.communicator.setSystemState(sentBundle, cf.cluster().getNodeInfo(Node.ofStorage(1)), f.mockWaiter);
Request req = f.receivedRequest.get();
- assertThat(req, notNullValue());
- assertThat(req.methodName(), equalTo(RPCCommunicator.SET_DISTRIBUTION_STATES_RPC_METHOD_NAME));
+ assertNotNull(req);
+ assertEquals(req.methodName(), RPCCommunicator.SET_DISTRIBUTION_STATES_RPC_METHOD_NAME);
assertTrue(req.parameters().satisfies("bix")); // <compression type>, <uncompressed size>, <payload>
ClusterStateBundle receivedBundle = RPCUtil.decodeStateBundleFromSetDistributionStatesRequest(req);
- assertThat(receivedBundle, equalTo(sentBundle));
+ assertEquals(receivedBundle, sentBundle);
}
@Test
@@ -169,9 +168,9 @@ public class RPCCommunicatorTest {
f.communicator.setSystemState(sentBundle, cf.cluster().getNodeInfo(Node.ofStorage(1)), f.mockWaiter);
RequestWaiter waiter = f.receivedWaiter.get();
- assertThat(waiter, notNullValue());
+ assertNotNull(waiter);
Request req = f.receivedRequest.get();
- assertThat(req, notNullValue());
+ assertNotNull(req);
req.setError(ErrorCode.NO_SUCH_METHOD, "que?");
waiter.handleRequestDone(req);
@@ -183,8 +182,8 @@ public class RPCCommunicatorTest {
// Now when we try again, we should have been downgraded to the legacy setsystemstate2 RPC
f.communicator.setSystemState(sentBundle, cf.cluster().getNodeInfo(Node.ofStorage(1)), f.mockWaiter);
req = f.receivedRequest.get();
- assertThat(req, notNullValue());
- assertThat(req.methodName(), equalTo(RPCCommunicator.LEGACY_SET_SYSTEM_STATE2_RPC_METHOD_NAME));
+ assertNotNull(req);
+ assertEquals(req.methodName(), RPCCommunicator.LEGACY_SET_SYSTEM_STATE2_RPC_METHOD_NAME);
}
@Test
@@ -194,10 +193,10 @@ public class RPCCommunicatorTest {
f.communicator.activateClusterStateVersion(12345, cf.cluster().getNodeInfo(Node.ofDistributor(1)), f.mockWaiter);
Request req = f.receivedRequest.get();
- assertThat(req, notNullValue());
- assertThat(req.methodName(), equalTo(RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_METHOD_NAME));
+ assertNotNull(req);
+ assertEquals(req.methodName(), RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_METHOD_NAME);
assertTrue(req.parameters().satisfies("i")); // <cluster state version>
- assertThat(req.parameters().get(0).asInt32(), equalTo(12345));
+ assertEquals(req.parameters().get(0).asInt32(), 12345);
}
}
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
index 02c5aeb33c7..994bdef5898 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
@@ -84,7 +84,7 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
for (String configSource : configSourceSet.getSources()) {
Spec spec = new Spec(configSource);
Target target = supervisor.connect(spec);
- target.invokeSync(req, 30.0);
+ target.invokeSync(req, Duration.ofSeconds(30));
if (target.isValid())
return;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
index a946704234d..250f0705e5b 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
@@ -309,7 +309,7 @@ public class ConfigProxyRpcServerTest {
}
void invoke(Request request) {
- target.invokeSync(request, Duration.ofMinutes(10).getSeconds());
+ target.invokeSync(request, Duration.ofMinutes(10));
}
@Override
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
index d77cfc17c92..858dc46f77a 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
@@ -45,7 +45,7 @@ public class JRTConfigRequester implements RequestWaiter {
private static final Duration delayBetweenWarnings = Duration.ofSeconds(60);
static final float randomFraction = 0.2f;
/* Time to be added to server timeout to create client timeout. This is the time allowed for the server to respond after serverTimeout has elapsed. */
- private static final Double additionalTimeForClientTimeout = 10.0;
+ private static final Duration additionalTimeForClientTimeout = Duration.ofSeconds(10);
private final TimingValues timingValues;
private final ScheduledThreadPoolExecutor scheduler;
@@ -100,7 +100,7 @@ public class JRTConfigRequester implements RequestWaiter {
request.setContext(new RequestContext(sub, req, connection));
if (!req.validateParameters()) throw new ConfigurationRuntimeException("Error in parameters for config request: " + req);
- double jrtClientTimeout = getClientTimeout(req);
+ Duration jrtClientTimeout = getClientTimeout(req);
log.log(FINE, () -> "Requesting config for " + sub + " on connection " + connection
+ " with client timeout " + jrtClientTimeout +
(log.isLoggable(FINEST) ? (",defcontent=" + req.getDefContent().asString()) : ""));
@@ -271,7 +271,7 @@ public class JRTConfigRequester implements RequestWaiter {
return connectionPool;
}
- private Double getClientTimeout(JRTClientConfigRequest request) {
- return (request.getTimeout() / 1000.0) + additionalTimeForClientTimeout;
+ private Duration getClientTimeout(JRTClientConfigRequest request) {
+ return Duration.ofMillis(request.getTimeout()).plus(additionalTimeForClientTimeout);
}
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
index 24a080d5824..dc0372cea7f 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
@@ -10,6 +10,8 @@ import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import com.yahoo.vespa.config.protocol.Payload;
+import java.time.Duration;
+
/**
* For unit testing
*
@@ -37,14 +39,14 @@ public class MockConnection implements ConnectionPool, Connection {
}
@Override
- public void invokeAsync(Request request, double jrtTimeout, RequestWaiter requestWaiter) {
+ public void invokeAsync(Request request, Duration jrtTimeout, RequestWaiter requestWaiter) {
numberOfRequests++;
lastRequest = request;
responseHandler.handle(request, requestWaiter);
}
@Override
- public void invokeSync(Request request, double jrtTimeout) {
+ public void invokeSync(Request request, Duration jrtTimeout) {
numberOfRequests++;
lastRequest = request;
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/Connection.java b/config/src/main/java/com/yahoo/vespa/config/Connection.java
index ea6419c62e1..69e8fcf9963 100644
--- a/config/src/main/java/com/yahoo/vespa/config/Connection.java
+++ b/config/src/main/java/com/yahoo/vespa/config/Connection.java
@@ -4,14 +4,16 @@ package com.yahoo.vespa.config;
import com.yahoo.jrt.Request;
import com.yahoo.jrt.RequestWaiter;
+import java.time.Duration;
+
/**
* @author hmusum
*/
public interface Connection {
- void invokeAsync(Request request, double jrtTimeout, RequestWaiter requestWaiter);
+ void invokeAsync(Request request, Duration jrtTimeout, RequestWaiter requestWaiter);
- void invokeSync(Request request, double jrtTimeout);
+ void invokeSync(Request request, Duration jrtTimeout);
String getAddress();
diff --git a/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java b/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
index 2d7c96febd6..f2a104696c1 100644
--- a/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
+++ b/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
@@ -7,6 +7,7 @@ import com.yahoo.jrt.Spec;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
+import java.time.Duration;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -30,12 +31,12 @@ public class JRTConnection implements Connection {
}
@Override
- public void invokeAsync(Request request, double jrtTimeout, RequestWaiter requestWaiter) {
+ public void invokeAsync(Request request, Duration jrtTimeout, RequestWaiter requestWaiter) {
getTarget().invokeAsync(request, jrtTimeout, requestWaiter);
}
@Override
- public void invokeSync(Request request, double jrtTimeout) {
+ public void invokeSync(Request request, Duration jrtTimeout) {
getTarget().invokeSync(request, jrtTimeout);
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java b/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
index b3a4590fdb2..62308315c95 100644
--- a/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
+++ b/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
@@ -11,6 +11,7 @@ import com.yahoo.jrt.Transport;
import com.yahoo.vespa.defaults.Defaults;
import java.io.File;
+import java.time.Duration;
import java.util.logging.Logger;
import static java.util.logging.Level.FINE;
@@ -47,7 +48,7 @@ public class UrlDownloader {
target = supervisor.connect(spec);
// ping to check if connection is working
Request request = new Request("frt.rpc.ping");
- target.invokeSync(request, 5.0);
+ target.invokeSync(request, Duration.ofSeconds(5));
if (! request.isError()) {
log.log(FINE, () -> "Successfully connected to '" + spec + "', this = " + System.identityHashCode(this));
return;
diff --git a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
index 345118b5fd4..5b0f1351ff5 100644
--- a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
+++ b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
@@ -26,6 +26,7 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -239,7 +240,7 @@ public class LoadTester {
System.out.println("# Requesting: " + reqKey);
long start = System.nanoTime();
- target.invokeSync(request.getRequest(), 10.0);
+ target.invokeSync(request.getRequest(), Duration.ofSeconds(10));
long durationInMillis = (System.nanoTime() - start) / 1_000_000;
if (request.isError()) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
index 23df938e0b7..c80faa2375a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
@@ -65,7 +65,7 @@ public class FileDistributionStatus extends AbstractComponent {
HostStatus getHostStatus(String hostname, int port, Duration timeout) {
Target target = supervisor.connect(new Spec(hostname, port));
Request request = new Request("filedistribution.getActiveFileReferencesStatus");
- target.invokeSync(request, timeout.toMillis() / 1000);
+ target.invokeSync(request, timeout);
HostStatus hostStatus = createHostStatusFromResponse(hostname, request);
target.close();
return hostStatus;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
index abb8a3e8487..7d7d4aa1d7d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
@@ -10,6 +10,7 @@ import com.yahoo.jrt.StringArray;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
+import java.time.Duration;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -20,7 +21,7 @@ import java.util.logging.Logger;
public class FileDistributionImpl implements FileDistribution, RequestWaiter {
private final static Logger log = Logger.getLogger(FileDistributionImpl.class.getName());
- private final static double rpcTimeout = 1.0;
+ private final static Duration rpcTimeout = Duration.ofSeconds(1);
private final Supervisor supervisor;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index 6518957a4ab..b36967d76a4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -45,6 +45,7 @@ import com.yahoo.vespa.filedistribution.FileReceiver;
import com.yahoo.vespa.filedistribution.FileReferenceData;
import com.yahoo.vespa.filedistribution.FileReferenceDownload;
import java.nio.ByteBuffer;
+import java.time.Duration;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -571,7 +572,7 @@ public class RpcServer implements Runnable, ConfigActivationListener, TenantList
private void invokeRpcIfValidConnection(Request request) {
if (target.isValid()) {
- target.invokeSync(request, 600);
+ target.invokeSync(request, Duration.ofMinutes(10));
} else {
throw new RuntimeException("Connection to " + target + " is invalid", target.getConnectionLostReason());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
index 40ed20b7969..441f6c3a6ce 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
@@ -166,7 +166,7 @@ public class RpcTester implements AutoCloseable {
void performRequest(Request req) {
clock.advance(Duration.ofMillis(10));
- sup.connect(spec).invokeSync(req, 10.0);
+ sup.connect(spec).invokeSync(req, Duration.ofSeconds(10));
if (req.methodName().equals(RpcServer.getConfigMethodName))
assertEquals(clock.instant(), hostLivenessTracker.lastRequestFrom(myHostname).get());
}
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
index c85a24db9bb..122027d706b 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
@@ -5,6 +5,8 @@ import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig;
import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.config.FileReference;
import com.yahoo.jrt.*;
+
+import java.time.Duration;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -56,7 +58,7 @@ class FileAcquirerImpl implements FileAcquirer {
target = supervisor.connect(spec);
// ping to check if connection is working
Request request = new Request("frt.rpc.ping");
- target.invokeSync(request, 5.0);
+ target.invokeSync(request, Duration.ofSeconds(5));
if (request.isError()) {
logWarning();
target.close();
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
index b1ef519d901..e8c08edb621 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
+import java.time.Duration;
import java.util.concurrent.TimeUnit;
/**
@@ -10,16 +11,16 @@ import java.util.concurrent.TimeUnit;
class Timer {
private final long endTime;
- private long timeLeft() {
- return endTime - System.currentTimeMillis();
+ private Duration timeLeft() {
+ return Duration.ofNanos(endTime - System.nanoTime());
}
public Timer(long timeout, TimeUnit timeUnit) {
- endTime = System.currentTimeMillis() + timeUnit.toMillis(timeout);
+ endTime = System.nanoTime() + timeUnit.toNanos(timeout);
}
public long timeLeft(TimeUnit timeUnit) {
- long remaining = timeUnit.convert(timeLeft(), TimeUnit.MILLISECONDS);
+ long remaining = timeUnit.convert(timeLeft().toMillis(), TimeUnit.MILLISECONDS);
if (remaining > 0)
return remaining;
@@ -28,6 +29,6 @@ class Timer {
}
public boolean isTimeLeft() {
- return timeLeft() > 0;
+ return ! timeLeft().isNegative();
}
}
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
index 7078c5aae6c..f6ebfcc416c 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
@@ -113,7 +113,7 @@ public class FileReferenceDownloader {
private boolean startDownloadRpc(FileReferenceDownload fileReferenceDownload, int retryCount, Connection connection) {
Request request = createRequest(fileReferenceDownload);
Duration rpcTimeout = rpcTimeout(retryCount);
- connection.invokeSync(request, rpcTimeout.getSeconds());
+ connection.invokeSync(request, rpcTimeout);
Level logLevel = (retryCount > 3 ? Level.INFO : Level.FINE);
FileReference fileReference = fileReferenceDownload.fileReference();
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
index f3b166c60fe..571c1f3a81f 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
@@ -13,6 +13,8 @@ import com.yahoo.jrt.StringValue;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
import com.yahoo.jrt.Transport;
+
+import java.time.Duration;
import java.util.logging.Level;
import net.jpountz.xxhash.XXHash64;
import net.jpountz.xxhash.XXHashFactory;
@@ -91,7 +93,7 @@ public class RpcTester {
fileBlob.parameters().add(new Int32Value(0));
fileBlob.parameters().add(new StringValue("OK"));
log.log(Level.INFO, "Doing invokeSync");
- target.invokeSync(fileBlob, 5);
+ target.invokeSync(fileBlob, Duration.ofSeconds(5));
log.log(Level.INFO, "Done with invokeSync");
}
}
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
index 629ea5915df..ffef06e6367 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
@@ -334,12 +334,12 @@ public class FileDownloaderTest {
}
@Override
- public void invokeAsync(Request request, double jrtTimeout, RequestWaiter requestWaiter) {
+ public void invokeAsync(Request request, Duration jrtTimeout, RequestWaiter requestWaiter) {
responseHandler.request(request);
}
@Override
- public void invokeSync(Request request, double jrtTimeout) {
+ public void invokeSync(Request request, Duration jrtTimeout) {
responseHandler.request(request);
}
diff --git a/jrt/src/com/yahoo/jrt/Connection.java b/jrt/src/com/yahoo/jrt/Connection.java
index 1e4092efb75..8a185907aae 100644
--- a/jrt/src/com/yahoo/jrt/Connection.java
+++ b/jrt/src/com/yahoo/jrt/Connection.java
@@ -464,8 +464,7 @@ class Connection extends Target {
waiter.waitDone();
}
- public void invokeAsync(Request req, double timeout,
- RequestWaiter waiter) {
+ public void invokeAsync(Request req, double timeout, RequestWaiter waiter) {
if (timeout < 0.0) {
timeout = 0.0;
}
diff --git a/jrt/src/com/yahoo/jrt/Target.java b/jrt/src/com/yahoo/jrt/Target.java
index 0e8c27deac5..6cb9d432e03 100644
--- a/jrt/src/com/yahoo/jrt/Target.java
+++ b/jrt/src/com/yahoo/jrt/Target.java
@@ -3,6 +3,8 @@ package com.yahoo.jrt;
import com.yahoo.security.tls.ConnectionAuthContext;
+import java.time.Duration;
+
/**
* A Target represents a connection endpoint with RPC
* capabilities. Each such connection has a client and a server
@@ -101,6 +103,10 @@ public abstract class Target {
*/
public abstract void invokeSync(Request req, double timeout);
+ public void invokeSync(Request req, Duration timeout) {
+ invokeSync(req, toSeconds(timeout));
+ }
+
/**
* Invoke a request on this target and let the completion be
* signalled with a callback.
@@ -109,8 +115,15 @@ public abstract class Target {
* @param timeout timeout in seconds
* @param waiter callback handler
*/
- public abstract void invokeAsync(Request req, double timeout,
- RequestWaiter waiter);
+ public abstract void invokeAsync(Request req, double timeout, RequestWaiter waiter);
+
+ public void invokeAsync(Request req, Duration timeout, RequestWaiter waiter) {
+ invokeAsync(req, toSeconds(timeout), waiter);
+ }
+
+ private static double toSeconds(Duration duration) {
+ return ((double)duration.toMillis())/1000.0;
+ }
/**
* Invoke a request on this target, but ignore the return
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
index 7963cd51c75..778cb0455e8 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
@@ -13,6 +13,7 @@ import com.yahoo.jrt.Task;
import com.yahoo.jrt.TransportThread;
import com.yahoo.jrt.Values;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -206,7 +207,7 @@ public class Mirror implements IMirror {
req = new Request("slobrok.incremental.fetch");
req.parameters().add(new Int32Value(specsGeneration)); // gencnt
req.parameters().add(new Int32Value(5000)); // mstimeout
- target.invokeAsync(req, 40.0, reqWait);
+ target.invokeAsync(req, Duration.ofSeconds(40), reqWait);
}
private void handleUpdate() {
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
index 14afea396bf..e529dea2eff 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
@@ -15,6 +15,7 @@ import com.yahoo.jrt.Task;
import com.yahoo.jrt.TransportThread;
import com.yahoo.jrt.Values;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -279,7 +280,7 @@ public class Register {
req.parameters().add(new StringValue(name));
req.parameters().add(new StringValue(mySpec));
log.log(Level.FINE, logMessagePrefix() + " now");
- target.invokeAsync(req, 35.0, reqWait);
+ target.invokeAsync(req, Duration.ofSeconds(35), reqWait);
}
private String logMessagePrefix() {
diff --git a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
index 24ab63c1d2f..5fd8beb3cc7 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
@@ -17,6 +17,7 @@ import com.yahoo.jrt.TargetWatcher;
import com.yahoo.jrt.Task;
import com.yahoo.jrt.Transport;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -225,7 +226,7 @@ public class Slobrok {
this.spec = spec;
target = orb.connect(new Spec(spec));
Request cbReq = new Request("slobrok.callback.listNamesServed");
- target.invokeAsync(cbReq, 5.0, this);
+ target.invokeAsync(cbReq, Duration.ofSeconds(5), this);
}
@Override
diff --git a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
index 71049673d90..67933cfafde 100644
--- a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
+++ b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
@@ -16,6 +16,7 @@ import com.yahoo.jrt.Transport;
import com.yahoo.jrt.Value;
import com.yahoo.jrt.Values;
+import java.time.Duration;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
@@ -80,7 +81,7 @@ public class RpcInvoker {
supervisor = new Supervisor(new Transport("invoker"));
target = supervisor.connect(new Spec(connectspec));
Request request = createRequest(method,arguments);
- target.invokeSync(request,10.0);
+ target.invokeSync(request, Duration.ofSeconds(10));
if (request.isError()) {
System.err.println("error(" + request.errorCode() + "): " + request.errorMessage());
return;
diff --git a/jrt/tests/com/yahoo/jrt/AbortTest.java b/jrt/tests/com/yahoo/jrt/AbortTest.java
index 2f31b3a52f6..df1f207458e 100644
--- a/jrt/tests/com/yahoo/jrt/AbortTest.java
+++ b/jrt/tests/com/yahoo/jrt/AbortTest.java
@@ -4,6 +4,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -44,7 +46,7 @@ public class AbortTest {
Test.Waiter w = new Test.Waiter();
Request req = new Request("test");
req.parameters().add(new Int32Value(20));
- target.invokeAsync(req, 5.0, w);
+ target.invokeAsync(req, Duration.ofSeconds(5), w);
req.abort();
barrier.breakIt();
w.waitDone();
@@ -54,7 +56,7 @@ public class AbortTest {
Request req2 = new Request("test");
req2.parameters().add(new Int32Value(30));
- target.invokeSync(req2, 5.0);
+ target.invokeSync(req2, Duration.ofSeconds(5));
assertTrue(!req2.isError());
assertEquals(1, req2.returnValues().size());
assertEquals(30, req2.returnValues().get(0).asInt32());
diff --git a/jrt/tests/com/yahoo/jrt/BackTargetTest.java b/jrt/tests/com/yahoo/jrt/BackTargetTest.java
index a55a6d7f474..5b9e7ccb157 100644
--- a/jrt/tests/com/yahoo/jrt/BackTargetTest.java
+++ b/jrt/tests/com/yahoo/jrt/BackTargetTest.java
@@ -4,6 +4,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -81,24 +83,24 @@ public class BackTargetTest {
@org.junit.Test
public void testBackTarget() {
checkTargets(false, false);
- target.invokeSync(new Request("sample_target"), 5.0);
+ target.invokeSync(new Request("sample_target"), Duration.ofSeconds(5));
checkTargets(true, false);
- serverBackTarget.invokeSync(new Request("sample_target"), 5.0);
+ serverBackTarget.invokeSync(new Request("sample_target"), Duration.ofSeconds(5));
checkTargets(true, true);
checkValues(0, 0);
- target.invokeSync(new Request("inc"), 5.0);
+ target.invokeSync(new Request("inc"), Duration.ofSeconds(5));
checkValues(1, 0);
- serverBackTarget.invokeSync(new Request("inc"), 5.0);
+ serverBackTarget.invokeSync(new Request("inc"), Duration.ofSeconds(5));
checkValues(1, 1);
- clientBackTarget.invokeSync(new Request("inc"), 5.0);
+ clientBackTarget.invokeSync(new Request("inc"), Duration.ofSeconds(5));
checkValues(2, 1);
- target.invokeSync(new Request("back_inc"), 5.0);
+ target.invokeSync(new Request("back_inc"), Duration.ofSeconds(5));
checkValues(2, 2);
- serverBackTarget.invokeSync(new Request("back_inc"), 5.0);
+ serverBackTarget.invokeSync(new Request("back_inc"), Duration.ofSeconds(5));
checkValues(3, 2);
- clientBackTarget.invokeSync(new Request("back_inc"), 5.0);
+ clientBackTarget.invokeSync(new Request("back_inc"), Duration.ofSeconds(5));
checkValues(3, 3);
}
diff --git a/jrt/tests/com/yahoo/jrt/DetachTest.java b/jrt/tests/com/yahoo/jrt/DetachTest.java
index 3c3356b53e2..4c3ee085913 100644
--- a/jrt/tests/com/yahoo/jrt/DetachTest.java
+++ b/jrt/tests/com/yahoo/jrt/DetachTest.java
@@ -4,6 +4,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -66,11 +68,11 @@ public class DetachTest {
Test.Waiter w1 = new Test.Waiter();
Request req1 = new Request("d_inc");
req1.parameters().add(new Int32Value(50));
- target.invokeAsync(req1, 5.0, w1);
+ target.invokeAsync(req1, Duration.ofSeconds(5), w1);
Request req2 = new Request("d_inc_r");
req2.parameters().add(new Int32Value(60));
- target.invokeSync(req2, 5.0);
+ target.invokeSync(req2, Duration.ofSeconds(5));
assertTrue(!req2.isError());
assertEquals(1, req2.returnValues().size());
@@ -123,7 +125,7 @@ public class DetachTest {
Test.Waiter w = new Test.Waiter();
Request req3 = new Request("inc_b");
req3.parameters().add(new Int32Value(100));
- target.invokeAsync(req3, 5.0, w);
+ target.invokeAsync(req3, Duration.ofSeconds(5), w);
Request blocked = (Request) receptor.get();
try {
blocked.returnRequest();
diff --git a/jrt/tests/com/yahoo/jrt/EchoTest.java b/jrt/tests/com/yahoo/jrt/EchoTest.java
index 47c6e806635..11742fa42e2 100644
--- a/jrt/tests/com/yahoo/jrt/EchoTest.java
+++ b/jrt/tests/com/yahoo/jrt/EchoTest.java
@@ -11,6 +11,7 @@ import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import java.security.cert.X509Certificate;
+import java.time.Duration;
import java.util.List;
import static com.yahoo.jrt.CryptoUtils.createTestTlsContext;
@@ -156,7 +157,7 @@ public class EchoTest {
for (int i = 0; i < refValues.size(); i++) {
p.add(refValues.get(i));
}
- target.invokeSync(req, 60.0);
+ target.invokeSync(req, Duration.ofSeconds(60));
assertTrue(req.checkReturnTypes("bBhHiIlLfFdDxXsS"));
assertTrue(Test.equals(req.returnValues(), req.parameters()));
assertTrue(Test.equals(req.returnValues(), refValues));
diff --git a/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java b/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
index 436b650198e..e17b6c0cfdd 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
@@ -5,6 +5,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -57,7 +59,7 @@ public class InvokeAsyncTest {
req.parameters().add(new StringValue("def"));
Test.Waiter w = new Test.Waiter();
- target.invokeAsync(req, 5.0, w);
+ target.invokeAsync(req, Duration.ofSeconds(5), w);
assertFalse(w.isDone());
barrier.breakIt();
w.waitDone();
@@ -75,7 +77,7 @@ public class InvokeAsyncTest {
req.parameters().add(new StringValue("def"));
assertFalse(filter.invoked);
Test.Waiter w = new Test.Waiter();
- target.invokeAsync(req, 10, w);
+ target.invokeAsync(req, Duration.ofSeconds(10), w);
assertFalse(w.isDone());
barrier.breakIt();
w.waitDone();
diff --git a/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java b/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
index 3b58ba2f42e..0b75fe713c2 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
@@ -5,13 +5,15 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class InvokeErrorTest {
- final double timeout=60.0;
+ final Duration timeout = Duration.ofSeconds(60);
Supervisor server;
Acceptor acceptor;
Supervisor client;
diff --git a/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java b/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
index ec196bea47c..ff44017e1bc 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
@@ -10,6 +10,7 @@ import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
+import java.time.Duration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -67,7 +68,7 @@ public class InvokeSyncTest {
req.parameters().add(new StringValue("abc"));
req.parameters().add(new StringValue("def"));
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertTrue(!req.isError());
assertEquals(1, req.returnValues().size());
@@ -94,7 +95,7 @@ public class InvokeSyncTest {
req.parameters().add(new StringValue("abc"));
req.parameters().add(new StringValue("def"));
assertFalse(filter.invoked);
- target.invokeSync(req, 10);
+ target.invokeSync(req, Duration.ofSeconds(10));
assertFalse(req.isError());
assertEquals("abcdef", req.returnValues().get(0).asString());
assertTrue(filter.invoked);
diff --git a/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java b/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
index 8b674136fe2..64c3bc91371 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
@@ -5,6 +5,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -56,7 +58,7 @@ public class InvokeVoidTest {
public void testInvokeVoid() {
Request req = new Request("set");
req.parameters().add(new Int32Value(40));
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertTrue(!req.isError());
assertEquals(0, req.returnValues().size());
@@ -64,7 +66,7 @@ public class InvokeVoidTest {
target.invokeVoid(new Request("inc"));
req = new Request("get");
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertTrue(!req.isError());
assertEquals(42, req.returnValues().get(0).asInt32());
diff --git a/jrt/tests/com/yahoo/jrt/LatencyTest.java b/jrt/tests/com/yahoo/jrt/LatencyTest.java
index 0df15ed400b..945833e51a8 100644
--- a/jrt/tests/com/yahoo/jrt/LatencyTest.java
+++ b/jrt/tests/com/yahoo/jrt/LatencyTest.java
@@ -2,6 +2,7 @@
package com.yahoo.jrt;
+import java.time.Duration;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
import java.util.logging.Logger;
@@ -116,7 +117,7 @@ public class LatencyTest {
}
Request req = new Request("inc");
req.parameters().add(new Int32Value(value));
- target.invokeSync(req, 60.0);
+ target.invokeSync(req, Duration.ofSeconds(60));
long duration = System.nanoTime() - t;
assertTrue(req.checkReturnTypes("i"));
assertEquals(value + 1, req.returnValues().get(0).asInt32());
diff --git a/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java b/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
index 212447dd6da..c0ef9606b1f 100644
--- a/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
+++ b/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
@@ -5,6 +5,7 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
import java.util.HashSet;
import static org.junit.Assert.assertEquals;
@@ -38,7 +39,7 @@ public class MandatoryMethodsTest {
@org.junit.Test
public void testPing() {
Request req = new Request("frt.rpc.ping");
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertFalse(req.isError());
assertEquals(0, req.returnValues().size());
@@ -47,7 +48,7 @@ public class MandatoryMethodsTest {
@org.junit.Test
public void testGetMethodList() {
Request req = new Request("frt.rpc.getMethodList");
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertFalse(req.isError());
assertTrue(req.checkReturnTypes("SSS"));
@@ -81,7 +82,7 @@ public class MandatoryMethodsTest {
public void testGetMethodInfo() {
Request req = new Request("frt.rpc.getMethodInfo");
req.parameters().add(new StringValue("frt.rpc.getMethodInfo"));
- target.invokeSync(req, 5.0);
+ target.invokeSync(req, Duration.ofSeconds(5));
assertFalse(req.isError());
assertTrue(req.checkReturnTypes("sssSSSS"));
diff --git a/jrt/tests/com/yahoo/jrt/TimeoutTest.java b/jrt/tests/com/yahoo/jrt/TimeoutTest.java
index 0366020b221..1a802758e60 100644
--- a/jrt/tests/com/yahoo/jrt/TimeoutTest.java
+++ b/jrt/tests/com/yahoo/jrt/TimeoutTest.java
@@ -5,6 +5,8 @@ package com.yahoo.jrt;
import org.junit.After;
import org.junit.Before;
+import java.time.Duration;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -52,11 +54,11 @@ public class TimeoutTest {
req.parameters().add(new StringValue("abc"));
req.parameters().add(new StringValue("def"));
- target.invokeSync(req, 0.1);
+ target.invokeSync(req, Duration.ofMillis(100));
barrier.breakIt();
Request flush = new Request("frt.rpc.ping");
- target.invokeSync(flush, 5.0);
+ target.invokeSync(flush, Duration.ofSeconds(5));
assertTrue(!flush.isError());
assertTrue(req.isError());
@@ -72,7 +74,7 @@ public class TimeoutTest {
req.parameters().add(new StringValue("def"));
Test.Waiter w = new Test.Waiter();
- target.invokeAsync(req, 30.0, w);
+ target.invokeAsync(req, Duration.ofSeconds(30), w);
try { Thread.sleep(2500); } catch (InterruptedException e) {}
barrier.breakIt();
w.waitDone();
diff --git a/logserver/src/test/java/ai/vespa/logserver/protocol/ArchiveLogMessagesMethodTest.java b/logserver/src/test/java/ai/vespa/logserver/protocol/ArchiveLogMessagesMethodTest.java
index d60587d1642..1a95909c8a4 100644
--- a/logserver/src/test/java/ai/vespa/logserver/protocol/ArchiveLogMessagesMethodTest.java
+++ b/logserver/src/test/java/ai/vespa/logserver/protocol/ArchiveLogMessagesMethodTest.java
@@ -15,6 +15,7 @@ import com.yahoo.log.LogMessage;
import com.yahoo.logserver.LogDispatcher;
import org.junit.Test;
+import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
@@ -68,7 +69,7 @@ public class ArchiveLogMessagesMethodTest {
request.parameters().add(new Int8Value((byte)0));
request.parameters().add(new Int32Value(requestPayload.length));
request.parameters().add(new DataValue(requestPayload));
- target.invokeSync(request, 30/*seconds*/);
+ target.invokeSync(request, Duration.ofSeconds(30));
Values returnValues = request.returnValues();
assertEquals(3, returnValues.size());
assertEquals(0, returnValues.get(0).asInt8());
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
index 811d8a25459..b4fa7d8f887 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
@@ -32,6 +32,7 @@ import com.yahoo.messagebus.routing.RoutingNode;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
@@ -240,7 +241,7 @@ public class RPCNetwork implements Network, MethodHandler {
@Override
public void send(Message msg, List<RoutingNode> recipients) {
SendContext ctx = new SendContext(this, msg, recipients);
- double timeout = ctx.msg.getTimeRemainingNow() / 1000.0;
+ Duration timeout = Duration.ofMillis(ctx.msg.getTimeRemainingNow());
for (RoutingNode recipient : ctx.recipients) {
RPCServiceAddress address = (RPCServiceAddress)recipient.getServiceAddress();
address.getTarget().resolveVersion(timeout, ctx);
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
index 85f50051e34..6fbab1a4b7f 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
@@ -7,6 +7,8 @@ import com.yahoo.jrt.RequestWaiter;
import com.yahoo.jrt.Spec;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
+
+import java.time.Duration;
import java.util.logging.Level;
import com.yahoo.text.Utf8Array;
@@ -95,7 +97,7 @@ public class RPCTarget implements RequestWaiter {
* @param timeout The timeout for the request in seconds.
* @param handler The handler to be called once the version is available.
*/
- void resolveVersion(double timeout, VersionHandler handler) {
+ void resolveVersion(Duration timeout, VersionHandler handler) {
boolean hasVersion = false;
boolean shouldInvoke = false;
boolean shouldLog = log.isLoggable(Level.FINE);
@@ -158,8 +160,7 @@ public class RPCTarget implements RequestWaiter {
/**
* <p>Declares a version handler used when resolving the version of a
* target. An instance of this is passed to {@link
- * RPCTarget#resolveVersion(double,
- * com.yahoo.messagebus.network.rpc.RPCTarget.VersionHandler)}, and invoked
+ * RPCTarget#resolveVersion(Duration, RPCTarget.VersionHandler)}, and invoked
* either synchronously or asynchronously, depending on whether or not the
* version is already available.</p>
*/
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
index 6d41fc93c25..ec5bd53cb21 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
@@ -3,6 +3,8 @@ package ai.vespa.metricsproxy.service;
import com.yahoo.component.annotation.Inject;
import com.yahoo.component.AbstractComponent;
+
+import java.time.Duration;
import java.util.logging.Level;
import com.yahoo.jrt.ErrorCode;
@@ -170,7 +172,7 @@ public class ConfigSentinelClient extends AbstractComponent {
}
if (connection.isValid()) {
Request req = new Request("sentinel.ls");
- connection.invokeSync(req, 5.0);
+ connection.invokeSync(req, Duration.ofSeconds(5));
if (req.errorCode() == ErrorCode.NONE &&
req.checkReturnTypes("s"))
{
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
index 8c8a44deae6..cf3610fe0bb 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
@@ -14,6 +14,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.Timeout;
+import java.time.Duration;
import java.util.List;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
@@ -35,7 +36,7 @@ public class RpcHealthMetricsTest {
getFileContents("health-check-failed.response.json");
private static final String WANTED_RPC_RESPONSE =
getFileContents("rpc-json-output-check.json").trim();
- private static final double RPC_INVOKE_TIMEOUT = 60.0;
+ private static final Duration RPC_INVOKE_TIMEOUT = Duration.ofSeconds(60);
@Rule
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
index cedf7542233..1e7a398b3d0 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
@@ -19,6 +19,7 @@ import org.junit.Test;
import org.junit.rules.Timeout;
import java.io.IOException;
+import java.time.Duration;
import java.util.List;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
@@ -45,7 +46,7 @@ public class RpcMetricsTest {
private static final String METRICS_RESPONSE = getFileContents("metrics-storage-simple.json").trim();
private static final String EXTRA_APP = "extra";
- private static final double RPC_INVOKE_TIMEOUT = 60.0;
+ private static final Duration RPC_INVOKE_TIMEOUT = Duration.ofSeconds(60);
private static class RpcClient implements AutoCloseable {
private final Supervisor supervisor;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java b/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
index 49a8c7fc583..fae602425ae 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
@@ -28,6 +28,7 @@ import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
@@ -146,7 +147,7 @@ public class VespaSummaryBenchmark {
r.parameters().add(new Int8Value(CompressionType.NONE.getCode()));
r.parameters().add(new Int32Value(blob.length));
r.parameters().add(new DataValue(blob));
- target.invokeAsync(r, 100.0, waiter);
+ target.invokeAsync(r, Duration.ofSeconds(100), waiter);
}
try {
waiter.waitForReplies();