From a1839d08e6273cbf12fa86f440d5d078804756ba Mon Sep 17 00:00:00 2001 From: Marios Trivyzas Date: Wed, 18 Mar 2020 09:43:30 +0100 Subject: [PATCH 1/2] Increase step between checks for cancellation Check for cancellation every 1024 docs instead of every 15 to lower the impact of the check in query's performance. Fixes: #53496 --- .../elasticsearch/search/internal/ExitableDirectoryReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java b/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java index b66532bbd093e..a809209394a24 100644 --- a/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java +++ b/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java @@ -245,7 +245,7 @@ public int getDocCount() { private static class ExitableIntersectVisitor implements PointValues.IntersectVisitor { - private static final int MAX_CALLS_BEFORE_QUERY_TIMEOUT_CHECK = (1 << 4) - 1; // 15 + private static final int MAX_CALLS_BEFORE_QUERY_TIMEOUT_CHECK = 1 << 10; // 1024 private final PointValues.IntersectVisitor in; private final QueryCancellation queryCancellation; From 0ebf2f166da9d5a8aee2c73fe6939a7c679ecc0b Mon Sep 17 00:00:00 2001 From: Marios Trivyzas Date: Wed, 18 Mar 2020 11:42:26 +0100 Subject: [PATCH 2/2] address comment --- .../elasticsearch/search/internal/ExitableDirectoryReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java b/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java index a809209394a24..51a94f4023b65 100644 --- a/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java +++ b/server/src/main/java/org/elasticsearch/search/internal/ExitableDirectoryReader.java @@ -245,7 +245,7 @@ public int getDocCount() { private static class ExitableIntersectVisitor implements PointValues.IntersectVisitor { - private static final int MAX_CALLS_BEFORE_QUERY_TIMEOUT_CHECK = 1 << 10; // 1024 + private static final int MAX_CALLS_BEFORE_QUERY_TIMEOUT_CHECK = (1 << 10) - 1; // 1023 private final PointValues.IntersectVisitor in; private final QueryCancellation queryCancellation;