aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-02-25 14:47:59 +0100
committerHarald Musum <musum@verizonmedia.com>2019-02-25 14:47:59 +0100
commit646251bc259c32df7fc6aca48b9a9bb88c4f16cb (patch)
tree4caa0975483902d8d1d114aa4c5755e2eed3de7f
parent3148c6dc8e5d7911ccf0bbb533edaa4ceb3b7c5d (diff)
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.
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java9
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java3
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java12
3 files changed, 17 insertions, 7 deletions
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);
}
}
}
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 ab0f7521e7e..bd4401d3cab 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
@@ -52,14 +52,18 @@ class FileAcquirerImpl implements FileAcquirer {
private void connect(Timer timer) throws InterruptedException {
while (timer.isTimeLeft()) {
pause();
- 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()) {
+ logWarning();
+ target.close();
+ } else {
log.log(LogLevel.DEBUG, "Successfully connected to '" + spec + "', this = " + System.identityHashCode(this));
pauseTime = 0;
logCount = 0;
return;
- } else {
- logWarning();
}
}
}