diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-10-29 20:15:54 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-10-29 20:15:54 +0100 |
commit | 5b8f92a7e2ec58b5d227326488a4b4c3d3fda636 (patch) | |
tree | 610ce22e03bf1d20c7a7498b616115452acb61eb /vespaclient-container-plugin | |
parent | 50c1f916a1699daac57f35cbc0c37060d09aed54 (diff) |
Use existing timeout parse code
Diffstat (limited to 'vespaclient-container-plugin')
2 files changed, 5 insertions, 19 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java index f9bb94b3ccb..8287b6f1630 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java @@ -56,6 +56,7 @@ import com.yahoo.messagebus.Trace; import com.yahoo.messagebus.TraceNode; import com.yahoo.metrics.simple.MetricReceiver; import com.yahoo.restapi.Path; +import com.yahoo.search.query.ParameterParser; import com.yahoo.text.Text; import com.yahoo.vespa.config.content.AllClustersBucketSpacesConfig; import com.yahoo.yolean.Exceptions; @@ -100,7 +101,6 @@ import static com.yahoo.jdisc.http.HttpRequest.Method.PUT; import static java.util.Objects.requireNonNull; import static java.util.logging.Level.FINE; import static java.util.logging.Level.WARNING; -import static java.util.stream.Collectors.collectingAndThen; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toMap; import static java.util.stream.Collectors.toUnmodifiableMap; @@ -112,13 +112,11 @@ import static java.util.stream.Collectors.toUnmodifiableMap; */ public class DocumentV1ApiHandler extends AbstractRequestHandler { + private static final Duration defaultTimeout = Duration.ofSeconds(175); + private static final Logger log = Logger.getLogger(DocumentV1ApiHandler.class.getName()); private static final Parser<Integer> integerParser = Integer::parseInt; - private static final Parser<Double> timeoutParser = value -> { - int suffixLength = value.endsWith("ms") ? 2 : value.endsWith("s") ? 1 : 0; - double factor = suffixLength == 2 ? 1e-3 : 1; - return Double.parseDouble(value.substring(0, value.length() - suffixLength)) * factor; - }; + private static final Parser<Long> timeoutMillisParser = value -> ParameterParser.asMilliSeconds(value, defaultTimeout.toMillis()); private static final Parser<Boolean> booleanParser = Boolean::parseBoolean; private static final CompletionHandler logException = new CompletionHandler() { @@ -135,8 +133,6 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { private static final JsonFactory jsonFactory = new JsonFactory(); - private static final Duration defaultTimeout = Duration.ofSeconds(175); - private static final String CREATE = "create"; private static final String CONDITION = "condition"; private static final String ROUTE = "route"; @@ -206,8 +202,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { HttpRequest request = (HttpRequest) rawRequest; try { - request.setTimeout(getProperty(request, TIMEOUT, timeoutParser) - .map(timeoutSeconds -> (long) (timeoutSeconds * 1000)) + request.setTimeout(getProperty(request, TIMEOUT, timeoutMillisParser) .orElse(defaultTimeout.toMillis()), TimeUnit.MILLISECONDS); diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java index 989f8c6a387..c85db0582eb 100644 --- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java +++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java @@ -449,15 +449,6 @@ public class DocumentV1ApiTest { "}", response.readAll()); assertEquals(400, response.getStatus()); - // GET with wrong timeout fails - access.session.expect((__, ___) -> { throw new AssertionError("Not supposed to happen"); }); - response = driver.sendRequest("http://localhost/document/v1/space/music/number/1/two?timeout=30us"); - assertSameJson("{" + - " \"pathId\": \"/document/v1/space/music/number/1/two\"," + - " \"message\": \"Failed parsing '30us': For input string: \\\"30u\\\"\"" + - "}", response.readAll()); - assertEquals(400, response.getStatus()); - // INSUFFICIENT_STORAGE is a 507 access.session.expect((id, parameters) -> { parameters.responseHandler().get().handleResponse(new Response(0, "disk full", Response.Outcome.INSUFFICIENT_STORAGE)); |