diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-10-05 12:23:27 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-10-05 12:25:35 +0200 |
commit | 113315ed2cc6958bb9241f616f14c7f9f7c7c70e (patch) | |
tree | 7c57f42ca47b7ed22b3dad6203acd0e4072b499e | |
parent | 81b9d23e0e85e73626ff6edea446741bb263b465 (diff) |
Add convenience methods
7 files changed, 51 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java index 268965850ba..0268e187f35 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java @@ -102,9 +102,8 @@ public class DeploymentTrigger { public void triggerFailing(ApplicationId applicationId, Duration timeout) { try (Lock lock = applications().lock(applicationId)) { Application application = applications().require(applicationId); - if (!application.deploying().isPresent()) { // No ongoing change, no need to retry - return; - } + if (!application.deploying().isPresent()) return; // No ongoing change, no need to retry + // Retry first failing job for (JobType jobType : order.jobsFrom(application.deploymentSpec())) { JobStatus jobStatus = application.deploymentJobs().jobStatus().get(jobType); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 7aef1e413aa..142b6d6018b 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -98,6 +98,7 @@ import java.util.logging.Level; * * @author bratseth */ +@SuppressWarnings("unused") // created by injection public class ApplicationApiHandler extends LoggingRequestHandler { private final Controller controller; diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java index e02a31440ce..2230a36ecec 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java @@ -21,6 +21,7 @@ import java.util.logging.Level; * * @author bratseth */ +@SuppressWarnings("unused") // Created by injection public class ControllerApiHandler extends LoggingRequestHandler { private final ControllerMaintenance maintenance; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java index 12016bb3d77..6bbf89a906e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java @@ -11,6 +11,11 @@ import java.io.OutputStream; import static com.yahoo.jdisc.Response.Status.*; +/** + * Error responses with JSON bodies + * + * @author bratseth + */ public class ErrorResponse extends HttpResponse { private final Slime slime = new Slime(); diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java index 188ff29d629..6e79877a657 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java @@ -257,4 +257,18 @@ public class RankingExpression implements Serializable { return root.evaluate(context); } + /** + * Creates a ranking expression from a string + * + * @throws IllegalArgumentException if the string is not a valid ranking expression + */ + public static RankingExpression from(String expression) { + try { + return new RankingExpression(expression); + } + catch (ParseException e) { + throw new IllegalStateException(e); + } + } + } diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java index c0157b3c8b6..fe6ac76f32f 100755 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java @@ -1,11 +1,20 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression; +import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue; import com.yahoo.searchlib.rankingexpression.parser.ParseException; +import com.yahoo.searchlib.rankingexpression.rule.ArithmeticNode; +import com.yahoo.searchlib.rankingexpression.rule.ArithmeticOperator; import com.yahoo.searchlib.rankingexpression.rule.CompositeNode; +import com.yahoo.searchlib.rankingexpression.rule.ConstantNode; +import com.yahoo.searchlib.rankingexpression.rule.Function; import com.yahoo.searchlib.rankingexpression.rule.IfNode; import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode; import com.yahoo.searchlib.rankingexpression.rule.FunctionNode; +import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; +import com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode; +import com.yahoo.tensor.functions.Reduce; +import com.yahoo.tensor.functions.TensorFunction; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -50,6 +59,18 @@ public class RankingExpressionTestCase { assertParse("query(var1) + query(var2) - query(var3) * (query(var4) / query(var5))", " $var1 + $var2 - $var3 *($var4 / $var5)"); assertParse("if (if (f1.out < query(p1), 0, 1) < if (f2.out < query(p2), 0, 1), f3.out, query(p3))", "if(if(f1.out<$p1,0,1)<if(f2.out<$p2,0,1),f3.out,$p3)"); } + + @Test + public void testProgrammaticBuilding() throws ParseException { + ReferenceNode input = new ReferenceNode("input"); + ReferenceNode constant = new ReferenceNode("constant"); + ArithmeticNode product = new ArithmeticNode(input, ArithmeticOperator.MULTIPLY, constant); + Reduce sum = new Reduce(new TensorFunctionNode.TensorFunctionExpressionNode(product), Reduce.Aggregator.sum); + RankingExpression expression = new RankingExpression(new TensorFunctionNode(sum)); + + RankingExpression expected = new RankingExpression("sum(input * constant)"); + assertEquals(expected.toString(), expression.toString()); + } @Test public void testLookaheadIndefinitely() throws Exception { diff --git a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java index a5e16fc89ea..2572842b213 100644 --- a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java +++ b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java @@ -14,9 +14,10 @@ import java.nio.ByteBuffer; * <p>Some static io convenience methods.</p> * * @author bratseth - * @author <a href="mailto:borud@yahoo-inc.com">Bjorn Borud</a> + * @author Bjorn Borud */ public abstract class IOUtils { + static private final Charset utf8Charset = Charset.forName("utf-8"); /** Closes a writer, or does nothing if the writer is null */ @@ -410,6 +411,11 @@ public abstract class IOUtils { return ret.toString(); } + /** Read an input stream completely into a string */ + public static String readAll(InputStream stream, Charset charset) throws IOException { + return readAll(new InputStreamReader(stream, charset)); + } + /** Convenience method for closing a list of readers. Does nothing if the given reader list is null. */ public static void closeAll(List<Reader> readers) { if (readers==null) return; |