summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-01-31 12:31:58 +0100
committerJon Bratseth <bratseth@oath.com>2018-01-31 12:31:58 +0100
commite94d28dd48c5ac5f40885d7d64cd8480bebba3c8 (patch)
tree1e4f17f16ed69432f7c11058d19b38ce3581951c
parenta44edeba9f38c38c431d7b9b6e1ac454e2a0e610 (diff)
Nonfunctional changes only
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorFlowTestCase.java39
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java9
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java125
-rw-r--r--container-search/src/main/java/com/yahoo/search/Result.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java22
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java21
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeMapContext.java1
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java5
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 {