summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-07-06 15:43:28 +0200
committerGitHub <noreply@github.com>2018-07-06 15:43:28 +0200
commit81c70357d1e85dddd8c1bfd87df012f92eb37cf4 (patch)
treeaeb92b2bb2f7e43144e9da9b0dfc1a38683a609f
parentf7a0f62467ef32809a6f77e766a8b4a2cae957b0 (diff)
parentce091b73daa650f57594b66f78a0a2b82bbd8b39 (diff)
Merge pull request #6355 from vespa-engine/hmusum/use-exact-method-parameters-in-method-spec
Use exact method parameters in spec
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java18
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java5
2 files changed, 12 insertions, 11 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
index 37379a9aadc..5c6764ea799 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
@@ -28,6 +28,7 @@ import com.yahoo.yolean.Exceptions;
import java.io.File;
import java.io.IOException;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
@@ -143,23 +144,24 @@ public class FileServer {
return new LazyFileReferenceData(reference, file.getName(), FileReferenceData.Type.file, file);
}
}
- public void serveFile(Request request, Receiver receiver) {
- pullExecutor.execute(() -> serveFile(request.parameters().get(0).asString(), request, receiver));
+
+ public void serveFile(String fileReference, boolean downloadFromOtherSourceIfNotFound, Request request, Receiver receiver) {
+ pullExecutor.execute(() -> serveFileInternal(fileReference, downloadFromOtherSourceIfNotFound, request, receiver));
}
- private void serveFile(String fileReference, Request request, Receiver receiver) {
+
+ private void serveFileInternal(String fileReference, boolean downloadFromOtherSourceIfNotFound, Request request, Receiver receiver) {
+ log.log(LogLevel.DEBUG, () -> "Received request for reference '" + fileReference + "' from " + request.target());
+
FileApiErrorCodes result;
try {
- log.log(LogLevel.DEBUG, () -> "Received request for reference '" + fileReference + "' from " + request.target());
- result = hasFile(fileReference)
- ? FileApiErrorCodes.OK
- : FileApiErrorCodes.NOT_FOUND;
+ result = hasFile(fileReference) ? FileApiErrorCodes.OK : FileApiErrorCodes.NOT_FOUND;
if (result == FileApiErrorCodes.OK) {
startFileServing(fileReference, receiver);
} else {
// Non-zero second parameter means that the request should never lead
// to a new download typically because the request comes from another config server.
// This is to avoid config servers asking each other for a file that does not exist
- if (request.parameters().size() == 1 || request.parameters().get(1).asInt32() == 0) {
+ if (downloadFromOtherSourceIfNotFound) {
log.log(LogLevel.DEBUG, "File not found, downloading from another source");
downloader.getFile(new FileReferenceDownload(new FileReference(fileReference), false /* downloadFromOtherSourceIfNotFound */));
} else {
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 94dc7d04da0..048000f31c4 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
@@ -206,8 +206,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
getSupervisor().addMethod(new Method("printStatistics", "", "s", this, "printStatistics")
.methodDesc("printStatistics")
.returnDesc(0, "statistics", "Statistics for server"));
- // TODO: Change parameters to "si" instead of "s*" when all clients have been updated
- getSupervisor().addMethod(new Method("filedistribution.serveFile", "s*", "is", this, "serveFile"));
+ getSupervisor().addMethod(new Method("filedistribution.serveFile", "si", "is", this, "serveFile"));
getSupervisor().addMethod(new Method("filedistribution.setFileReferencesToDownload", "S", "i",
this, "setFileReferencesToDownload")
.methodDesc("set which file references to download")
@@ -529,7 +528,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
public final void serveFile(Request request) {
request.detach();
FileServer.Receiver receiver = new ChunkedFileReceiver(request.target());
- fileServer.serveFile(request, receiver);
+ fileServer.serveFile(request.parameters().get(0).asString(), request.parameters().get(1).asInt32() == 0, request, receiver);
}
@SuppressWarnings({"UnusedDeclaration"})