Skip to content

Commit ef167c0

Browse files
author
Jay Deng
committed
force termination with no synchronization between threads
1 parent d2bf2f5 commit ef167c0

File tree

2 files changed

+4
-15
lines changed

2 files changed

+4
-15
lines changed

server/src/main/java/org/opensearch/search/query/EarlyTerminatingCollector.java

+3-11
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public static final class EarlyTerminationException extends RuntimeException {
5959
}
6060

6161
private final int maxCountHits;
62-
private final AtomicLong numCollected;
62+
private long numCollected;
6363
private final boolean forceTermination;
6464
private boolean earlyTerminated;
6565

@@ -74,19 +74,11 @@ public static final class EarlyTerminationException extends RuntimeException {
7474
super(delegate);
7575
this.maxCountHits = maxCountHits;
7676
this.forceTermination = forceTermination;
77-
this.numCollected = new AtomicLong();
78-
}
79-
80-
EarlyTerminatingCollector(final Collector delegate, int maxCountHits, boolean forceTermination, AtomicLong numCollected) {
81-
super(delegate);
82-
this.maxCountHits = maxCountHits;
83-
this.forceTermination = forceTermination;
84-
this.numCollected = numCollected;
8577
}
8678

8779
@Override
8880
public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException {
89-
if (numCollected.get() >= maxCountHits) {
81+
if (numCollected >= maxCountHits) {
9082
earlyTerminated = true;
9183
if (forceTermination) {
9284
throw new EarlyTerminationException("early termination [CountBased]");
@@ -97,7 +89,7 @@ public LeafCollector getLeafCollector(LeafReaderContext context) throws IOExcept
9789
return new FilterLeafCollector(super.getLeafCollector(context)) {
9890
@Override
9991
public void collect(int doc) throws IOException {
100-
if (numCollected.incrementAndGet() > maxCountHits) {
92+
if (++numCollected > maxCountHits) {
10193
earlyTerminated = true;
10294
if (forceTermination) {
10395
throw new EarlyTerminationException("early termination [CountBased]");

server/src/main/java/org/opensearch/search/query/EarlyTerminatingCollectorManager.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,19 @@ public class EarlyTerminatingCollectorManager<C extends Collector>
3030
private final CollectorManager<C, ReduceableSearchResult> manager;
3131
private final int maxCountHits;
3232
private boolean forceTermination;
33-
private final AtomicLong numCollected;
3433

3534
EarlyTerminatingCollectorManager(CollectorManager<C, ReduceableSearchResult> manager, int maxCountHits, boolean forceTermination) {
3635
this.manager = manager;
3736
this.maxCountHits = maxCountHits;
3837
this.forceTermination = forceTermination;
39-
this.numCollected = new AtomicLong();
4038
}
4139

4240
@Override
4341
public EarlyTerminatingCollector newCollector() throws IOException {
4442
return new EarlyTerminatingCollector(
4543
manager.newCollector(),
4644
maxCountHits,
47-
forceTermination /* forced termination is not supported */,
48-
numCollected
45+
forceTermination /* forced termination is not supported */
4946
);
5047
}
5148

0 commit comments

Comments
 (0)