Skip to content

Commit c007e8c

Browse files
authored
Avoid expensive status update in LuceneOperator (#134079)
With doc_partitioning targeting large shards, updating the status of LuceneOperator can be expensive with many slices. This change uses the keys of the partitioning map instead of iterating over all slices in the queue.
1 parent 190a3f1 commit c007e8c

File tree

2 files changed

+2
-21
lines changed

2 files changed

+2
-21
lines changed

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
import java.io.IOException;
3535
import java.io.UncheckedIOException;
36-
import java.util.Collection;
3736
import java.util.Collections;
3837
import java.util.HashSet;
3938
import java.util.List;
@@ -284,20 +283,14 @@ List<Object> tags() {
284283
public String toString() {
285284
StringBuilder sb = new StringBuilder();
286285
sb.append(this.getClass().getSimpleName()).append("[");
287-
sb.append("shards = ").append(sortedUnion(processedShards, sliceQueue.remainingShardsIdentifiers()));
286+
sb.append("shards = ")
287+
.append(sliceQueue.partitioningStrategies().keySet().stream().sorted().collect(Collectors.joining(",", "[", "]")));
288288
sb.append(", maxPageSize = ").append(maxPageSize);
289289
describe(sb);
290290
sb.append("]");
291291
return sb.toString();
292292
}
293293

294-
private static Set<String> sortedUnion(Collection<String> a, Collection<String> b) {
295-
var result = new TreeSet<String>();
296-
result.addAll(a);
297-
result.addAll(b);
298-
return result;
299-
}
300-
301294
protected abstract void describe(StringBuilder sb);
302295

303296
@Override

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneSliceQueue.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.io.UncheckedIOException;
2424
import java.util.ArrayList;
2525
import java.util.Arrays;
26-
import java.util.Collection;
2726
import java.util.Collections;
2827
import java.util.Comparator;
2928
import java.util.HashMap;
@@ -178,17 +177,6 @@ public Map<String, PartitioningStrategy> partitioningStrategies() {
178177
return partitioningStrategies;
179178
}
180179

181-
public Collection<String> remainingShardsIdentifiers() {
182-
List<String> remaining = new ArrayList<>(slices.length());
183-
for (int i = 0; i < slices.length(); i++) {
184-
LuceneSlice slice = slices.get(i);
185-
if (slice != null) {
186-
remaining.add(slice.shardContext().shardIdentifier());
187-
}
188-
}
189-
return remaining;
190-
}
191-
192180
public static LuceneSliceQueue create(
193181
List<? extends ShardContext> contexts,
194182
Function<ShardContext, List<QueryAndTags>> queryFunction,

0 commit comments

Comments
 (0)