From f222275505d0f83ed557b9b94fd2d2a5615ca5d8 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 12 Aug 2022 16:25:23 +0200 Subject: Add method to use Duration as timeout to make unit explicit, and avoid many magic conversions. --- .../core/rpc/RPCCommunicator.java | 41 ++++++++++--------- .../vespa/clustercontroller/core/DatabaseTest.java | 2 +- .../core/FleetControllerTest.java | 4 +- .../clustercontroller/core/MasterElectionTest.java | 17 ++++---- .../clustercontroller/core/RpcServerTest.java | 12 +++--- .../core/rpc/RPCCommunicatorTest.java | 47 +++++++++++----------- .../vespa/config/proxy/RpcConfigSourceClient.java | 2 +- .../config/proxy/ConfigProxyRpcServerTest.java | 2 +- .../subscription/impl/JRTConfigRequester.java | 8 ++-- .../config/subscription/impl/MockConnection.java | 6 ++- .../java/com/yahoo/vespa/config/Connection.java | 6 ++- .../java/com/yahoo/vespa/config/JRTConnection.java | 5 ++- .../java/com/yahoo/vespa/config/UrlDownloader.java | 3 +- .../yahoo/vespa/config/benchmark/LoadTester.java | 3 +- .../server/application/FileDistributionStatus.java | 2 +- .../filedistribution/FileDistributionImpl.java | 3 +- .../yahoo/vespa/config/server/rpc/RpcServer.java | 3 +- .../yahoo/vespa/config/server/rpc/RpcTester.java | 2 +- .../fileacquirer/FileAcquirerImpl.java | 4 +- .../yahoo/filedistribution/fileacquirer/Timer.java | 11 ++--- .../filedistribution/FileReferenceDownloader.java | 2 +- .../yahoo/vespa/filedistribution/RpcTester.java | 4 +- .../vespa/filedistribution/FileDownloaderTest.java | 4 +- jrt/src/com/yahoo/jrt/Connection.java | 3 +- jrt/src/com/yahoo/jrt/Target.java | 17 +++++++- jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java | 3 +- jrt/src/com/yahoo/jrt/slobrok/api/Register.java | 3 +- jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java | 3 +- jrt/src/com/yahoo/jrt/tool/RpcInvoker.java | 3 +- jrt/tests/com/yahoo/jrt/AbortTest.java | 6 ++- jrt/tests/com/yahoo/jrt/BackTargetTest.java | 18 +++++---- jrt/tests/com/yahoo/jrt/DetachTest.java | 8 ++-- jrt/tests/com/yahoo/jrt/EchoTest.java | 3 +- jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java | 6 ++- jrt/tests/com/yahoo/jrt/InvokeErrorTest.java | 4 +- jrt/tests/com/yahoo/jrt/InvokeSyncTest.java | 5 ++- jrt/tests/com/yahoo/jrt/InvokeVoidTest.java | 6 ++- jrt/tests/com/yahoo/jrt/LatencyTest.java | 3 +- jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java | 7 ++-- jrt/tests/com/yahoo/jrt/TimeoutTest.java | 8 ++-- .../protocol/ArchiveLogMessagesMethodTest.java | 3 +- .../yahoo/messagebus/network/rpc/RPCNetwork.java | 3 +- .../yahoo/messagebus/network/rpc/RPCTarget.java | 4 +- .../metricsproxy/service/ConfigSentinelClient.java | 4 +- .../metricsproxy/rpc/RpcHealthMetricsTest.java | 3 +- .../ai/vespa/metricsproxy/rpc/RpcMetricsTest.java | 3 +- .../VespaSummaryBenchmark.java | 3 +- 47 files changed, 189 insertions(+), 133 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 uniqueTimeoutValues = new HashSet<>(); + long max = -1; + long min = 100000; + final Set 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")); // , , 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")); // - 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 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..d94fb8f3420 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); 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(); -- cgit v1.2.3 From ec64add133a3b25900fd25a266a2497e757f809e Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 12 Aug 2022 17:37:47 +0200 Subject: Update java comment. --- .../src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 d94fb8f3420..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 @@ -160,8 +160,7 @@ public class RPCTarget implements RequestWaiter { /** *

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.

*/ -- cgit v1.2.3