aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2021-01-05 17:47:06 +0100
committerTor Brede Vekterli <vekterli@verizonmedia.com>2021-01-05 17:47:06 +0100
commit06909e7abf1da35827f3efe11287f19c736d5e8b (patch)
treea43075c0edec702dec395c83d9db8b220c51a3aa /container-search
parent4dff64a9dda3bbc86d8877116d3e2c7467322c21 (diff)
Cap max buckets per streaming search visitor
Avoids memory blow-up when visiting locations with a massive number of buckets.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java4
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java2
2 files changed, 4 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
index b05ddfa3bb2..ef0a60c76c0 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
@@ -64,6 +64,8 @@ class VdsVisitor extends VisitorDataHandler implements Visitor {
private static final CompoundName streamingPriority=new CompoundName("streaming.priority");
private static final CompoundName streamingMaxbucketspervisitor=new CompoundName("streaming.maxbucketspervisitor");
+ protected static final int MAX_BUCKETS_PER_VISITOR = 1024;
+
private static final Logger log = Logger.getLogger(VdsVisitor.class.getName());
private final VisitorParameters params = new VisitorParameters("");
private List<SearchResult.Hit> hits = new ArrayList<>();
@@ -199,7 +201,7 @@ class VdsVisitor extends VisitorDataHandler implements Visitor {
}
params.setMaxPending(Integer.MAX_VALUE);
- params.setMaxBucketsPerVisitor(Integer.MAX_VALUE);
+ params.setMaxBucketsPerVisitor(MAX_BUCKETS_PER_VISITOR);
params.setTraceLevel(inferSessionTraceLevel(query));
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
index 4bfbd91eb89..fd8383d6b37 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
@@ -247,7 +247,7 @@ public class VdsVisitorTestCase {
if (qa.maxBucketsPerVisitor != 0) {
assertEquals(qa.maxBucketsPerVisitor, params.getMaxBucketsPerVisitor());
} else {
- assertEquals(Integer.MAX_VALUE, params.getMaxBucketsPerVisitor());
+ assertEquals(VdsVisitor.MAX_BUCKETS_PER_VISITOR, params.getMaxBucketsPerVisitor());
}
assertEquals(false, params.getDynamicallyIncreaseMaxBucketsPerVisitor());