diff options
author | Harald Musum <musum@oath.com> | 2018-02-12 13:37:25 +0100 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-02-12 13:37:25 +0100 |
commit | f7f9a2546d53fd748d78160b5af1111894f92509 (patch) | |
tree | c0dede12d8cdee2cf504525684b745c071563738 /configserver | |
parent | b5b25dd286fd9be627081eb982db26df5a6faba6 (diff) |
No point in replying if connection back to client is gone
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java | 16 |
1 files changed, 12 insertions, 4 deletions
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 2ef0393e215..a5f288bf254 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 @@ -116,7 +116,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { this.metrics = metrics.getOrCreateMetricUpdater(Collections.<String, String>emptyMap()); this.hostLivenessTracker = hostLivenessTracker; BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(config.maxgetconfigclients()); - int numberOfRpcThreads = config.numRpcThreads() == 0 ? Runtime.getRuntime().availableProcessors() : config.numRpcThreads(); + int numberOfRpcThreads = (config.numRpcThreads() == 0) ? Runtime.getRuntime().availableProcessors() : config.numRpcThreads(); executorService = new ThreadPoolExecutor(numberOfRpcThreads, numberOfRpcThreads, 0, TimeUnit.SECONDS, workQueue, ThreadFactoryFactory.getThreadFactory(THREADPOOL_NAME)); delayedConfigResponses = new DelayedConfigResponses(this, config.numDelayedResponseThreads()); @@ -462,7 +462,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { request.parameters().add(new StringValue(fileData.filename())); request.parameters().add(new StringValue(fileData.type().name())); request.parameters().add(new Int64Value(fileData.size())); - target.invokeSync(request, 600); + invokeRpcIfValidConnection(request); if (request.isError()) { log.warning("Failed delivering meta for reference '" + fileData.fileReference().value() + "' with file '" + fileData.filename() + "' to " + target.toString() + " with error: '" + request.errorMessage() + "'."); @@ -480,7 +480,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { request.parameters().add(new Int32Value(session)); request.parameters().add(new Int32Value(partId)); request.parameters().add(new DataValue(buf)); - target.invokeSync(request, 600); + invokeRpcIfValidConnection(request); if (request.isError()) { throw new IllegalArgumentException("Failed delivering reference '" + ref.value() + "' to " + target.toString() + " with error: '" + request.errorMessage() + "'."); @@ -497,7 +497,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { request.parameters().add(new Int64Value(fileData.xxhash())); request.parameters().add(new Int32Value(status.getCode())); request.parameters().add(new StringValue(status.getDescription())); - target.invokeSync(request, 600); + invokeRpcIfValidConnection(request); if (request.isError()) { throw new IllegalArgumentException("Failed delivering reference '" + fileData.fileReference().value() + "' with file '" + fileData.filename() + "' to " + target.toString() + " with error: '" + request.errorMessage() + "'."); @@ -507,6 +507,14 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { } } } + + private void invokeRpcIfValidConnection(Request request) { + if (target.isValid()) { + target.invokeSync(request, 600); + } else { + throw new RuntimeException("Connection to " + target + " is invalid", target.getConnectionLostReason()); + } + } } @SuppressWarnings("UnusedDeclaration") |