diff options
15 files changed, 65 insertions, 170 deletions
diff --git a/container-search/src/main/java/com/yahoo/fs4/DocumentInfo.java b/container-search/src/main/java/com/yahoo/fs4/DocumentInfo.java index dd5a4fff584..8294ae5796d 100644 --- a/container-search/src/main/java/com/yahoo/fs4/DocumentInfo.java +++ b/container-search/src/main/java/com/yahoo/fs4/DocumentInfo.java @@ -13,20 +13,15 @@ import java.nio.ByteBuffer; */ public class DocumentInfo implements Cloneable { - private final GlobalId globalId; + private final byte [] globalId; private final double metric; private final int partId; private final int distributionKey; private final byte[] sortData; - DocumentInfo(ByteBuffer buffer, QueryResultPacket owner) { - this(buffer, owner, null); - } - DocumentInfo(ByteBuffer buffer, QueryResultPacket owner, byte[] sortData) { - byte[] rawGid = new byte[GlobalId.LENGTH]; - buffer.get(rawGid); - globalId = new GlobalId(rawGid); + globalId = new byte[GlobalId.LENGTH]; + buffer.get(globalId); metric = decodeMetric(buffer); partId = owner.getMldFeature() ? buffer.getInt() : 0; distributionKey = owner.getMldFeature() ? buffer.getInt() : 0; @@ -34,7 +29,7 @@ public class DocumentInfo implements Cloneable { } public DocumentInfo(GlobalId globalId, int metric, int partId, int distributionKey) { - this.globalId = globalId; + this.globalId = globalId.getRawId(); this.metric = metric; this.partId = partId; this.distributionKey = distributionKey; @@ -45,7 +40,8 @@ public class DocumentInfo implements Cloneable { return buffer.getDouble(); } - public GlobalId getGlobalId() { return globalId; } + public GlobalId getGlobalId() { return new GlobalId(globalId); } + public byte [] getRawGlobalId() { return globalId; } /** Raw rank score */ public double getMetric() { return metric; } @@ -61,7 +57,7 @@ public class DocumentInfo implements Cloneable { } public String toString() { - return "document info [globalId=" + globalId + ", metric=" + metric + "]"; + return "document info [globalId=" + new GlobalId(globalId).toString() + ", metric=" + metric + "]"; } /** @@ -69,8 +65,7 @@ public class DocumentInfo implements Cloneable { */ public Object clone() { try { - DocumentInfo docInfo=(DocumentInfo) super.clone(); - return docInfo; + return super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeException("Someone inserted a nonclonable superclass"); diff --git a/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java b/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java index 941bce67d16..7353d0730a4 100644 --- a/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java +++ b/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java @@ -178,7 +178,7 @@ public class GetDocSumsPacket extends Packet { Hit hit = i.next(); if (hit instanceof FastHit && !hit.isFilled(summaryClass)) { FastHit fastHit = (FastHit)hit; - buffer.put(fastHit.getGlobalId() != null ? fastHit.getGlobalId().getRawId() : emptyGid); + buffer.put(fastHit.getGlobalId() != null ? fastHit.getRawGlobalId() : emptyGid); buffer.putInt(fastHit.getPartId()); buffer.putInt(0); //Unused, was docstamp } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java deleted file mode 100644 index a3b5a6f57b6..00000000000 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.prelude.fastsearch; - -import com.yahoo.document.GlobalId; - - -/** - * Key for each entry in the packet cache. - * - * @author Mathias Mølster Lidal - */ -public class DocsumPacketKey { - - private GlobalId globalId; - private int partid; - private String summaryClass; - - private static boolean strEquals(String a, String b) { - if (a == null || b == null) { - return (a == null && b == null); - } - return a.equals(b); - } - - private static int strHashCode(String s) { - if (s == null) { - return 0; - } - return s.hashCode(); - } - - public DocsumPacketKey(GlobalId globalId, int partid, String summaryClass) { - this.globalId = globalId; - this.partid = partid; - this.summaryClass = summaryClass; - } - - public GlobalId getGlobalId() { - return globalId; - } - - public int getPartid() { - return partid; - } - - @Override - public boolean equals(Object o) { - if (o instanceof DocsumPacketKey) { - DocsumPacketKey other = (DocsumPacketKey) o; - - if (globalId.equals(other.getGlobalId()) - && partid == other.getPartid() - && strEquals(summaryClass, other.summaryClass)) - { - return true; - } - } - return false; - } - - @Override - public int hashCode() { - return globalId.hashCode() + 10 * partid + strHashCode(summaryClass); - } - -} diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4FillInvoker.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4FillInvoker.java index 97a04b9853c..a4729a87326 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4FillInvoker.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4FillInvoker.java @@ -41,22 +41,15 @@ public class FS4FillInvoker extends FillInvoker { @Override protected void sendFillRequest(Result result, String summaryClass) { - if (countFastHits(result) > 0) { - DocsumPacketKey[] summaryPacketKeys = getPacketKeys(result, summaryClass); - if (summaryPacketKeys.length == 0) { - expectedFillResults = 0; - } else { - try { - expectedFillResults = requestSummaries(result, summaryClass); - } catch (InvalidChannelException e) { - result.hits() - .addError(ErrorMessage.createBackendCommunicationError("Invalid channel " + getName() + " (summary fetch)")); - return; - } catch (IOException e) { - result.hits().addError(ErrorMessage.createBackendCommunicationError( - "IO error while talking on channel " + getName() + " (summary fetch): " + e.getMessage())); - return; - } + if (countFastHits(result, summaryClass) > 0) { + try { + expectedFillResults = requestSummaries(result, summaryClass); + } catch (InvalidChannelException e) { + result.hits() + .addError(ErrorMessage.createBackendCommunicationError("Invalid channel " + getName() + " (summary fetch)")); + } catch (IOException e) { + result.hits().addError(ErrorMessage.createBackendCommunicationError( + "IO error while talking on channel " + getName() + " (summary fetch): " + e.getMessage())); } } else { expectedFillResults = 0; @@ -132,10 +125,11 @@ public class FS4FillInvoker extends FillInvoker { } } - private int countFastHits(Result result) { + private int countFastHits(Result result, String summaryClass) { int count = 0; for (Iterator<Hit> i = hitIterator(result); i.hasNext();) { - if (i.next() instanceof FastHit) + Hit hit = i.next(); + if (hit instanceof FastHit && !hit.isFilled(summaryClass)) count++; } return count; @@ -170,35 +164,6 @@ public class FS4FillInvoker extends FillInvoker { return convertBasicPackets(receivedPackets); } - /** - * Returns an array of the hits contained in a result - * - * @return array of docids, empty array if no hits - */ - private DocsumPacketKey[] getPacketKeys(Result result, String summaryClass) { - DocsumPacketKey[] packetKeys = new DocsumPacketKey[result.getHitCount()]; - int x = 0; - - for (Iterator<com.yahoo.search.result.Hit> i = hitIterator(result); i.hasNext();) { - com.yahoo.search.result.Hit hit = i.next(); - if (hit instanceof FastHit) { - FastHit fastHit = (FastHit) hit; - if (!fastHit.isFilled(summaryClass)) { - packetKeys[x] = new DocsumPacketKey(fastHit.getGlobalId(), fastHit.getPartId(), summaryClass); - x++; - } - } - } - if (x < packetKeys.length) { - DocsumPacketKey[] tmp = new DocsumPacketKey[x]; - - System.arraycopy(packetKeys, 0, tmp, 0, x); - return tmp; - } else { - return packetKeys; - } - } - private static Packet[] convertBasicPackets(BasicPacket[] basicPackets) throws ClassCastException { // trying to cast a BasicPacket[] to Packet[] will compile, // but lead to a runtime error. At least that's what I got diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4SearchInvoker.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4SearchInvoker.java index 27c4c73dd65..33715921e6d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4SearchInvoker.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4SearchInvoker.java @@ -228,7 +228,7 @@ public class FS4SearchInvoker extends SearchInvoker implements ResponseMonitor<F hit.setRelevance(new Relevance(rank.doubleValue())); hit.setDistributionKey(document.getDistributionKey()); - hit.setGlobalId(document.getGlobalId()); + hit.setGlobalId(document.getRawGlobalId()); hit.setPartId(document.getPartId()); hit.setSortData(document.getSortData(), sorting); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java index 0126fc01410..515e09d0007 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java @@ -30,9 +30,7 @@ import java.util.function.BiConsumer; * @author Steinar Knutsen */ public class FastHit extends Hit { - - private static final GlobalId emptyGlobalId = new GlobalId(new byte[GlobalId.LENGTH]); - + private static final byte [] emptyGID = new byte[GlobalId.LENGTH]; /** The index of the content node this hit originated at */ private int distributionKey = 0; @@ -41,7 +39,7 @@ public class FastHit extends Hit { /** The global id of this document in the backend node which produced it */ //Todo should be bytearray directly and generate GlobvalId on access - private GlobalId globalId = emptyGlobalId; + private byte [] globalId; //TODO Remove with fs4 private transient QueryPacketData queryPacketData = null; @@ -71,9 +69,14 @@ public class FastHit extends Hit { /** * Creates an empty and temporarily invalid summary hit */ - public FastHit() { } + public FastHit() { + super(new Relevance(0.0)); + globalId = emptyGID; + partId = 0; + distributionKey = 0; + } - public FastHit(GlobalId gid, Relevance relevance, int partId, int distributionKey) { + public FastHit(byte [] gid, Relevance relevance, int partId, int distributionKey) { super(relevance); this.globalId = gid; this.partId = partId; @@ -87,11 +90,13 @@ public class FastHit extends Hit { // Note: This constructor is only used for tests, production use is always of the empty constructor private FastHit(String uri, double relevance, String source) { + super(new Relevance(relevance)); + partId = 0; + distributionKey = 0; + globalId = emptyGID; setId(uri); - setRelevance(new Relevance(relevance)); setSource(source); types().add("summary"); - setPartId(0); } /** Returns false - this is a concrete hit containing requested content */ @@ -110,16 +115,17 @@ public class FastHit extends Hit { // Fallback to index:[source]/[partid]/[id] StringBuilder sb = new StringBuilder(64); sb.append("index:").append(getSource()).append('/').append(getPartId()).append('/'); - appendAsHex(getGlobalId(), sb); + appendAsHex(globalId, sb); URI indexUri = new URI(sb.toString()); assignId(indexUri); return indexUri; } /** Returns the global id of this document in the backend node which produced it */ - public GlobalId getGlobalId() { return globalId; } + public GlobalId getGlobalId() { return new GlobalId(globalId); } + public byte [] getRawGlobalId() { return globalId; } - public void setGlobalId(GlobalId globalId) { this.globalId = globalId; } + public void setGlobalId(byte [] globalId) { this.globalId = globalId; } public int getPartId() { return partId; } @@ -363,7 +369,7 @@ public class FastHit extends Hit { @Override public String toString() { - return super.toString() + " [fasthit, globalid: " + globalId + ", partId: " + return super.toString() + " [fasthit, globalid: " + new GlobalId(globalId).toString() + ", partId: " + partId + ", distributionkey: " + distributionKey + "]"; } @@ -377,9 +383,8 @@ public class FastHit extends Hit { } } - private void appendAsHex(GlobalId gid, StringBuilder sb) { - byte[] rawGid = gid.getRawId(); - for (byte b : rawGid) { + private static void appendAsHex(byte [] gid, StringBuilder sb) { + for (byte b : gid) { String hex = Integer.toHexString(0xFF & b); if (hex.length() == 1) { sb.append('0'); diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java index 74de675684c..6039e09bbe1 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java @@ -7,7 +7,6 @@ import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; import com.yahoo.data.access.simple.Value; import com.yahoo.data.access.slime.SlimeAdapter; -import com.yahoo.document.GlobalId; import com.yahoo.fs4.GetDocSumsPacket; import com.yahoo.io.GrowableByteBuffer; import com.yahoo.prelude.fastsearch.DocumentDatabase; @@ -37,7 +36,7 @@ public class ProtobufSerialization { private static final int INITIAL_SERIALIZATION_BUFFER_SIZE = 10 * 1024; - public static byte[] serializeSearchRequest(Query query, String serverId) { + static byte[] serializeSearchRequest(Query query, String serverId) { return convertFromQuery(query, serverId).toByteArray(); } @@ -118,10 +117,10 @@ public class ProtobufSerialization { } } - public static SearchProtocol.DocsumRequest.Builder createDocsumRequestBuilder(Query query, - String serverId, - String summaryClass, - boolean includeQueryData) { + static SearchProtocol.DocsumRequest.Builder createDocsumRequestBuilder(Query query, + String serverId, + String summaryClass, + boolean includeQueryData) { var builder = SearchProtocol.DocsumRequest.newBuilder() .setTimeout((int) query.getTimeLeft()) .setDumpFeatures(query.properties().getBoolean(Ranking.RANKFEATURES, false)); @@ -155,10 +154,10 @@ public class ProtobufSerialization { return builder; } - public static byte[] serializeDocsumRequest(SearchProtocol.DocsumRequest.Builder builder, List<FastHit> documents) { + static byte[] serializeDocsumRequest(SearchProtocol.DocsumRequest.Builder builder, List<FastHit> documents) { builder.clearGlobalIds(); for (var hit : documents) { - builder.addGlobalIds(ByteString.copyFrom(hit.getGlobalId().getRawId())); + builder.addGlobalIds(ByteString.copyFrom(hit.getRawGlobalId())); } return builder.build().toByteArray(); } @@ -177,15 +176,14 @@ public class ProtobufSerialization { mergeRankProperties(ranking, builder::addRankProperties, builder::addTensorRankProperties); } - public static byte[] serializeResult(Result searchResult) { + static byte[] serializeResult(Result searchResult) { return convertFromResult(searchResult).toByteArray(); } - public static Result deserializeToSearchResult(byte[] payload, Query query, VespaBackEndSearcher searcher, int partId, int distKey) + static Result deserializeToSearchResult(byte[] payload, Query query, VespaBackEndSearcher searcher, int partId, int distKey) throws InvalidProtocolBufferException { var protobuf = SearchProtocol.SearchReply.parseFrom(payload); - var result = convertToResult(query, protobuf, searcher.getDocumentDatabase(query), partId, distKey, searcher.getName()); - return result; + return convertToResult(query, protobuf, searcher.getDocumentDatabase(query), partId, distKey, searcher.getName()); } private static Result convertToResult(Query query, @@ -222,7 +220,7 @@ public class ProtobufSerialization { var sorting = query.getRanking().getSorting(); for (var replyHit : protobuf.getHitsList()) { - FastHit hit = new FastHit(new GlobalId(replyHit.getGlobalId().toByteArray()), new Relevance(replyHit.getRelevance()), partId, distKey); + FastHit hit = new FastHit(replyHit.getGlobalId().toByteArray(), new Relevance(replyHit.getRelevance()), partId, distKey); hit.setQuery(query); if (!replyHit.getSortData().isEmpty()) { @@ -276,7 +274,7 @@ public class ProtobufSerialization { } if (hit instanceof FastHit) { FastHit fhit = (FastHit) hit; - hitBuilder.setGlobalId(ByteString.copyFrom(fhit.getGlobalId().getRawId())); + hitBuilder.setGlobalId(ByteString.copyFrom(fhit.getRawGlobalId())); } builder.addHits(hitBuilder); }); diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java index 712dca2c34a..9b661368972 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java @@ -141,7 +141,7 @@ public class RpcFillInvoker extends FillInvoker { } Cursor gids = root.setArray("gids"); for (FastHit hit : hits) { - gids.addData(hit.getGlobalId().getRawId()); + gids.addData(hit.getRawGlobalId()); } return slime; } diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java index 1d7d380f4db..cfed5ed00ad 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java @@ -7,6 +7,7 @@ import com.yahoo.prelude.fastsearch.GroupingListHit; import com.yahoo.search.Query; import com.yahoo.search.Searcher; import com.yahoo.search.result.Hit; +import com.yahoo.search.result.Relevance; import com.yahoo.searchlib.aggregation.FS4Hit; import com.yahoo.searchlib.aggregation.VdsHit; @@ -43,11 +44,8 @@ class HitConverter implements ResultBuilder.HitConverter { } private Hit convertFs4Hit(String summaryClass, FS4Hit groupHit) { - FastHit hit = new FastHit(); - hit.setRelevance(groupHit.getRank()); - hit.setGlobalId(groupHit.getGlobalId()); - hit.setPartId(groupHit.getPath()); - hit.setDistributionKey(groupHit.getDistributionKey()); + FastHit hit = new FastHit(groupHit.getGlobalId().getRawId(), new Relevance(groupHit.getRank()), + groupHit.getPath(), groupHit.getDistributionKey()); hit.setFillable(); hit.setSearcherSpecificMetaData(searcher, summaryClass); diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java index e6cc3ac9e54..d8924e16ff9 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java @@ -73,7 +73,7 @@ public class SlimeSummaryTestCase { public void testTimeout() { DocsumDefinitionSet docsum = createDocsumDefinitionSet(summary_cf); FastHit hit = new FastHit(); - assertEquals("Hit hit index:null/0/000000000000000000000000 (relevance null) [fasthit, globalid: 0 0 0 0 0 0 0 0 0 0 0 0, partId: 0, distributionkey: 0] failed: Timed out....", + assertEquals("Hit hit index:null/0/000000000000000000000000 (relevance 0.0) [fasthit, globalid: 0 0 0 0 0 0 0 0 0 0 0 0, partId: 0, distributionkey: 0] failed: Timed out....", docsum.lazyDecode("default", timeoutSummary(), hit)); } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFSChannel.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFSChannel.java index 70314300cc8..db14a2894db 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFSChannel.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFSChannel.java @@ -28,11 +28,11 @@ public class MockFSChannel extends FS4Channel { /** The number of active documents this should report in ping reponses */ private final long activeDocuments; - public MockFSChannel(Backend backend) { + MockFSChannel(Backend backend) { this(0, backend); } - public MockFSChannel(long activeDocuments, Backend backend) { + MockFSChannel(long activeDocuments, Backend backend) { super(backend, 0); this.activeDocuments = activeDocuments; } diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java index 110dbedf05a..27685426cf8 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java @@ -290,7 +290,7 @@ public class InterleavedSearchInvokerTest { if (value < 0) { hits.add(new MetaHit(value)); } else { - hits.add(new FastHit(new GlobalId(IdString.createIdString("id:test:test::" + value)), new Relevance(value), partId, distributionKey)); + hits.add(new FastHit(new GlobalId(IdString.createIdString("id:test:test::" + value)).getRawId(), new Relevance(value), partId, distributionKey)); } } return hits; diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java index cc32bfe1572..a5086c1446d 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java @@ -197,7 +197,7 @@ public class FillTestCase { FastHit hit = new FastHit("hit:" + hitId, 1.0); hit.setPartId(sourceNodeId); hit.setDistributionKey(sourceNodeId); - hit.setGlobalId(client.globalIdFrom(hitId)); + hit.setGlobalId(client.globalIdFrom(hitId).getRawId()); return hit; } diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java index 80daabe653f..0b1d0d07e7a 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java @@ -24,7 +24,7 @@ public class ProtobufSerializationTest { var builder = ProtobufSerialization.createDocsumRequestBuilder(q, "server", "summary", true); builder.setTimeout(0); var hit = new FastHit(); - hit.setGlobalId(new GlobalId(IdString.createIdString("id:ns:type::id"))); + hit.setGlobalId(new GlobalId(IdString.createIdString("id:ns:type::id")).getRawId()); var bytes = ProtobufSerialization.serializeDocsumRequest(builder, Collections.singletonList(hit)); assertThat(bytes.length, equalTo(41)); diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java index 58ca3697095..0ca608baa87 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java @@ -51,7 +51,7 @@ public class FeedHandlerV3 extends LoggingRequestHandler { DocumentmanagerConfig documentManagerConfig, SessionCache sessionCache, ThreadpoolConfig threadpoolConfig, - DocumentApiMetrics metricsHelper) throws Exception { + DocumentApiMetrics metricsHelper) { super(parentCtx); docTypeManager = new DocumentTypeManager(documentManagerConfig); this.sessionCache = sessionCache; |