diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-01-31 12:31:58 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-01-31 12:31:58 +0100 |
commit | e94d28dd48c5ac5f40885d7d64cd8480bebba3c8 (patch) | |
tree | 1e4f17f16ed69432f7c11058d19b38ce3581951c | |
parent | a44edeba9f38c38c431d7b9b6e1ac454e2a0e610 (diff) |
Nonfunctional changes only
10 files changed, 130 insertions, 99 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java index 3b68e0199a9..cd65c6ef761 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java @@ -708,7 +708,8 @@ public class RankProfile implements Serializable, Cloneable { private void checkNameCollisions(Map<String, Macro> macros, Map<String, Value> constants) { for (Map.Entry<String, Macro> macroEntry : macros.entrySet()) { if (constants.get(macroEntry.getKey()) != null) - throw new IllegalArgumentException("Cannot have both a constant and macro named '" + macroEntry.getKey() + "'"); + throw new IllegalArgumentException("Cannot have both a constant and macro named '" + + macroEntry.getKey() + "'"); } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java index d0f705d4c9a..9c7fd7d9f0a 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java @@ -189,7 +189,7 @@ public class TensorFlowFeatureConverter extends ExpressionTransformer<RankProfil throw new IllegalArgumentException("Model refers Placeholder '" + macroName + "' of type " + requiredType + " which must be produced by a macro in the rank profile, but " + - "this macro produces type " + actualType + " in " + profile); + "this macro produces type " + actualType); } } diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorFlowTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorFlowTestCase.java index c24e886c83d..82d0d66a82a 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorFlowTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorFlowTestCase.java @@ -80,6 +80,45 @@ public class RankingExpressionWithTensorFlowTestCase { } @Test + public void testTensorFlowReferenceMissingMacro() throws ParseException { + try { + RankProfileSearchFixture search = new RankProfileSearchFixture( + new StoringApplicationPackage(applicationDir), + " rank-profile my_profile {\n" + + " first-phase {\n" + + " expression: tensorflow('mnist_softmax/saved')" + + " }\n" + + " }"); + search.assertFirstPhaseExpression(vespaExpression, "my_profile"); + fail("Expecting exception"); + } + catch (IllegalArgumentException expected) { + assertEquals("Rank profile 'my_profile' is invalid: Could not use tensorflow model from " + + "tensorflow('mnist_softmax/saved'): " + + "Model refers Placeholder 'Placeholder' of type tensor(d0[],d1[784]) but this macro is " + + "not present in rank profile 'my_profile'", + Exceptions.toMessageString(expected)); + } + } + + @Test + public void testTensorFlowReferenceWithWrongMacroType() throws ParseException { + try { + RankProfileSearchFixture search = fixtureWith("tensor(d0[2],d5[10])(0.0)", + "tensorflow('mnist_softmax/saved')"); + search.assertFirstPhaseExpression(vespaExpression, "my_profile"); + fail("Expecting exception"); + } + catch (IllegalArgumentException expected) { + assertEquals("Rank profile 'my_profile' is invalid: Could not use tensorflow model from " + + "tensorflow('mnist_softmax/saved'): " + + "Model refers Placeholder 'Placeholder' of type tensor(d0[],d1[784]) which must be produced " + + "by a macro in the rank profile, but this macro produces type tensor(d0[2],d5[10])", + Exceptions.toMessageString(expected)); + } + } + + @Test public void testTensorFlowReferenceSpecifyingNonExistingSignature() throws ParseException { try { RankProfileSearchFixture search = fixtureWith("tensor(d0[2],d1[784])(0.0)", diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java b/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java index 9b6837a9dcb..b2d32c8e745 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java @@ -1,18 +1,17 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.jdisc; -import java.io.IOException; -import java.io.OutputStream; - import com.yahoo.container.handler.Coverage; import com.yahoo.container.handler.Timing; import com.yahoo.container.logging.HitCounts; import com.yahoo.jdisc.handler.CompletionHandler; import com.yahoo.jdisc.handler.ContentChannel; +import java.io.IOException; +import java.io.OutputStream; + /** - * An HTTP response supporting async rendering and extended information for - * logging. + * An HTTP response supporting async rendering and extended information for logging. * * @author Steinar Knutsen */ diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java index 933751fd9ad..1c2d28c754f 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java @@ -84,16 +84,18 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } @Override - protected LoggingCompletionHandler createLoggingCompletionHandler( - long startTime, long renderStartTime, HttpResponse response, - HttpRequest httpRequest, ContentChannelOutputStream rendererWiring) { + protected LoggingCompletionHandler createLoggingCompletionHandler(long startTime, + long renderStartTime, + HttpResponse response, + HttpRequest httpRequest, + ContentChannelOutputStream rendererWiring) { return new LoggingHandler(startTime, renderStartTime, httpRequest, response, rendererWiring); } private static String getClientIP(com.yahoo.jdisc.http.HttpRequest httpRequest) { SocketAddress clientAddress = httpRequest.getRemoteAddress(); - if (clientAddress == null) - return "0.0.0.0"; + if (clientAddress == null) return "0.0.0.0"; + return clientAddress.toString(); } @@ -105,24 +107,21 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } } - private static String remoteHostAddress( - com.yahoo.jdisc.http.HttpRequest httpRequest) { + private static String remoteHostAddress(com.yahoo.jdisc.http.HttpRequest httpRequest) { SocketAddress remoteAddress = httpRequest.getRemoteAddress(); - if (remoteAddress == null) - return "0.0.0.0"; + if (remoteAddress == null) return "0.0.0.0"; + if (remoteAddress instanceof InetSocketAddress) { - return ((InetSocketAddress) remoteAddress).getAddress() - .getHostAddress(); + return ((InetSocketAddress) remoteAddress).getAddress().getHostAddress(); } else { - throw new RuntimeException( - "Expected remote address of type InetSocketAddress, got " - + remoteAddress.getClass().getName()); + throw new RuntimeException("Expected remote address of type InetSocketAddress, got " + + remoteAddress.getClass().getName()); } } private void logTimes(long startTime, String sourceIP, - long renderStartTime, long commitStartTime, long endTime, - String req, String normalizedQuery, Timing t) { + long renderStartTime, long commitStartTime, long endTime, + String req, String normalizedQuery, Timing t) { // note: intentionally only taking time since request was received long totalTime = endTime - startTime; @@ -140,33 +139,33 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { return; } - StringBuilder msgbuf = new StringBuilder(); - msgbuf.append(normalizedQuery); - msgbuf.append(" from ").append(sourceIP).append(". "); + StringBuilder b = new StringBuilder(); + b.append(normalizedQuery); + b.append(" from ").append(sourceIP).append(". "); if (requestOverhead > 0) { - msgbuf.append("Time from HTTP connection open to request reception "); - msgbuf.append(requestOverhead).append(" ms. "); + b.append("Time from HTTP connection open to request reception "); + b.append(requestOverhead).append(" ms. "); } if (summaryStartTime != 0) { - msgbuf.append("Request time: "); - msgbuf.append(summaryStartTime - startTime).append(" ms. "); - msgbuf.append("Summary fetch time: "); - msgbuf.append(renderStartTime - summaryStartTime).append(" ms. "); + b.append("Request time: "); + b.append(summaryStartTime - startTime).append(" ms. "); + b.append("Summary fetch time: "); + b.append(renderStartTime - summaryStartTime).append(" ms. "); } else { long spentSearching = renderStartTime - startTime; - msgbuf.append("Processing time: ").append(spentSearching).append(" ms. "); + b.append("Processing time: ").append(spentSearching).append(" ms. "); } - msgbuf.append("Result rendering/transfer: "); - msgbuf.append(commitStartTime - renderStartTime).append(" ms. "); - msgbuf.append("End transaction: "); - msgbuf.append(endTime - commitStartTime).append(" ms. "); - msgbuf.append("Total: ").append(totalTime).append(" ms. "); - msgbuf.append("Timeout: ").append(timeoutInterval).append(" ms. "); - msgbuf.append("Request string: ").append(req); + b.append("Result rendering/transfer: "); + b.append(commitStartTime - renderStartTime).append(" ms. "); + b.append("End transaction: "); + b.append(endTime - commitStartTime).append(" ms. "); + b.append("Total: ").append(totalTime).append(" ms. "); + b.append("Timeout: ").append(timeoutInterval).append(" ms. "); + b.append("Request string: ").append(req); - log.log(LogLevel.WARNING, "Slow execution. " + msgbuf); + log.log(LogLevel.WARNING, "Slow execution. " + b); } private static class NullResponse extends ExtendedResponse { @@ -175,10 +174,11 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } @Override - public void render(OutputStream output, ContentChannel networkChannel, - CompletionHandler handler) throws IOException { + public void render(OutputStream output, ContentChannel networkChannel, CompletionHandler handler) + throws IOException { // NOP } + } private class LoggingHandler implements LoggingCompletionHandler { @@ -191,9 +191,8 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { private final ContentChannelOutputStream rendererWiring; private final ExtendedResponse extendedResponse; - LoggingHandler(long startTime, long renderStartTime, - HttpRequest httpRequest, HttpResponse httpResponse, - ContentChannelOutputStream rendererWiring) { + LoggingHandler(long startTime, long renderStartTime, HttpRequest httpRequest, HttpResponse httpResponse, + ContentChannelOutputStream rendererWiring) { this.startTime = startTime; this.renderStartTime = renderStartTime; this.commitStartTime = renderStartTime; @@ -233,20 +232,19 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } private void writeToLogs(long endTime) { - final com.yahoo.jdisc.http.HttpRequest jdiscRequest = httpRequest.getJDiscRequest(); + com.yahoo.jdisc.http.HttpRequest jdiscRequest = httpRequest.getJDiscRequest(); - logTimes( - startTime, - getClientIP(jdiscRequest), - renderStartTime, - commitStartTime, - endTime, - jdiscRequest.getUri().toString(), - extendedResponse.getParsedQuery(), - extendedResponse.getTiming()); + logTimes(startTime, + getClientIP(jdiscRequest), + renderStartTime, + commitStartTime, + endTime, + jdiscRequest.getUri().toString(), + extendedResponse.getParsedQuery(), + extendedResponse.getTiming()); - final Optional<AccessLogEntry> jdiscRequestAccessLogEntry - = AccessLoggingRequestHandler.getAccessLogEntry(jdiscRequest); + Optional<AccessLogEntry> jdiscRequestAccessLogEntry = + AccessLoggingRequestHandler.getAccessLogEntry(jdiscRequest); if (jdiscRequestAccessLogEntry.isPresent()) { // This means we are running with Jetty, not Netty. @@ -275,18 +273,17 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } } - private void populateAccessLogEntryNotCreatedByHttpServer( - final AccessLogEntry logEntry, - final com.yahoo.jdisc.http.HttpRequest httpRequest, - final Timing timing, - final String fullRequest, - final long commitStartTime, - final long startTime, - final long written, - final int status) { + private void populateAccessLogEntryNotCreatedByHttpServer(AccessLogEntry logEntry, + com.yahoo.jdisc.http.HttpRequest httpRequest, + Timing timing, + String fullRequest, + long commitStartTime, + long startTime, + long written, + int status) { try { - final InetSocketAddress remoteAddress = AccessLogUtil.getRemoteAddress(httpRequest); - final long evalStartTime = getEvalStart(timing, startTime); + InetSocketAddress remoteAddress = AccessLogUtil.getRemoteAddress(httpRequest); + long evalStartTime = getEvalStart(timing, startTime); logEntry.setIpV4Address(remoteHostAddress(httpRequest)); logEntry.setTimeStamp(evalStartTime); logEntry.setDurationBetweenRequestResponse(commitStartTime - evalStartTime); @@ -302,8 +299,8 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { logEntry.setHttpMethod(AccessLogUtil.getHttpMethod(httpRequest)); logEntry.setHttpVersion(AccessLogUtil.getHttpVersion(httpRequest)); } catch (Exception e) { - log.log(LogLevel.WARNING, "Could not populate the access log [" - + fullRequest + "]", e); + log.log(LogLevel.WARNING, "Could not populate the access log [" + fullRequest + "]", e); } } + } diff --git a/container-search/src/main/java/com/yahoo/search/Result.java b/container-search/src/main/java/com/yahoo/search/Result.java index ded8992fa65..7978798f53c 100644 --- a/container-search/src/main/java/com/yahoo/search/Result.java +++ b/container-search/src/main/java/com/yahoo/search/Result.java @@ -46,7 +46,7 @@ public final class Result extends com.yahoo.processing.Response implements Clone * Headers containing "envelope" meta information to be returned with this result. * Used for HTTP getHeaders when the return protocol is HTTP. */ - private ListMap<String,String> headers=null; + private ListMap<String,String> headers = null; /** * Result rendering infrastructure. diff --git a/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java b/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java index 82438bda34e..804ce1b496b 100644 --- a/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java +++ b/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java @@ -12,13 +12,11 @@ import java.util.Set; import static com.yahoo.search.statistics.TimeTracker.Activity.*; /** - * Basically a collection of TimeTracker instances. + * A collection of TimeTracker instances. * - * <p>This class may need a lot of restructuring as actual - * needs are mapped out. - * - * @author <a href="steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ +// This class may need a lot of restructuring as actual needs are mapped out. public class ElapsedTime { // An identity set is used to make it safe to do multiple merges. This may happen if @@ -35,16 +33,11 @@ public class ElapsedTime { private long fetcher(Activity toFetch, TimeTracker fetchFrom) { switch (toFetch) { - case SEARCH: - return fetchFrom.searchTime(); - case FILL: - return fetchFrom.fillTime(); - case PING: - return fetchFrom.pingTime(); - default: - return 0L; + case SEARCH: return fetchFrom.searchTime(); + case FILL: return fetchFrom.fillTime(); + case PING: return fetchFrom.pingTime(); + default: return 0L; } - } /** @@ -232,4 +225,5 @@ public class ElapsedTime { report.append("."); return report.toString(); } + } diff --git a/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java b/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java index 6112bc504d3..d2461dffc7a 100644 --- a/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java +++ b/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java @@ -1,25 +1,24 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.statistics; -import java.util.ArrayList; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - import com.yahoo.component.chain.Chain; import com.yahoo.prelude.Pong; import com.yahoo.processing.Processor; import com.yahoo.search.Result; import com.yahoo.search.Searcher; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; + /** - * A container for storing time stamps throughout the - * lifetime of an Execution instance. + * A container for storing time stamps throughout the lifetime of an Execution instance. * * <p>Check state both when entering and exiting, to allow for arbitrary * new queries anywhere inside a search chain. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ public final class TimeTracker { @@ -214,8 +213,6 @@ public final class TimeTracker { } concludeState(now); initNewState(now, activity); - } else { - return; } } @@ -314,7 +311,7 @@ public final class TimeTracker { return typedSum(Activity.PING); } - private long returnfromState(int searcherIndex, boolean detailed) { + private long returnFromState(int searcherIndex, boolean detailed) { if (detailed) { return detailedMeasurements(searcherIndex, false); } else { @@ -350,7 +347,7 @@ public final class TimeTracker { } private void sampleReturn(int searcherIndex, boolean detailed, ElapsedTime elapsed) { - long now = returnfromState(searcherIndex, detailed); + long now = returnFromState(searcherIndex, detailed); if (searcherIndex == entryIndex) { concludeStateOnExit(now); if (elapsed != null) { diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeMapContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeMapContext.java index f2c4ca58f6d..a018aae0c3e 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeMapContext.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeMapContext.java @@ -1,3 +1,4 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression.evaluation;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. import com.yahoo.tensor.TensorType; diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java index 9b2e81f0b6d..4d3bd04c3d4 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java @@ -1,8 +1,11 @@ -package com.yahoo.tensor.evaluation;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.tensor.evaluation; import com.yahoo.tensor.TensorType; /** + * Provides type information about a context (set of variable bindings). + * * @author bratseth */ public interface TypeContext { |