diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-07-06 15:43:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-06 15:43:28 +0200 |
commit | 81c70357d1e85dddd8c1bfd87df012f92eb37cf4 (patch) | |
tree | aeb92b2bb2f7e43144e9da9b0dfc1a38683a609f | |
parent | f7a0f62467ef32809a6f77e766a8b4a2cae957b0 (diff) | |
parent | ce091b73daa650f57594b66f78a0a2b82bbd8b39 (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.java | 18 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java | 5 |
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"}) |