From 646251bc259c32df7fc6aca48b9a9bb88c4f16cb Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Mon, 25 Feb 2019 14:47:59 +0100 Subject: Use connect instead of connectSync When using TLS the handshake may not be finished when connectSync returns, which might lead to unpredicatable and confusing behavior, use connect and ping to check for RPC connection being up instead. --- config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java | 9 +++++++-- .../main/java/com/yahoo/vespa/config/benchmark/LoadTester.java | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'config') 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 4947b618f50..66abba96e35 100644 --- a/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java +++ b/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java @@ -43,10 +43,15 @@ public class UrlDownloader { int timeRemaining = 5000; try { while (timeRemaining > 0) { - target = supervisor.connectSync(spec); - if (target.isValid()) { + target = supervisor.connect(spec); + // ping to check if connection is working + Request request = new Request("frt.rpc.ping"); + target.invokeSync(request, 5.0); + if (! request.isError()) { log.log(LogLevel.DEBUG, "Successfully connected to '" + spec + "', this = " + System.identityHashCode(this)); return; + } else { + target.close(); } Thread.sleep(500); timeRemaining -= 500; 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 c988413dbbb..dcaa71dda25 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 @@ -234,6 +234,7 @@ public class LoadTester { System.out.println("# Connection lost, reconnecting..."); reconnCycle = true; } + target.close(); target = connect(spec); } else { System.err.println(request.errorMessage()); @@ -270,7 +271,7 @@ public class LoadTester { } private Target connect(Spec spec) { - return supervisor.connectSync(spec); + return supervisor.connect(spec); } } } -- cgit v1.2.3