Skip to content

Commit 1316825

Browse files
authored
Replace superfluous usage of Counter with Supplier (#39048) (#39225)
`Counter` was used as a means of a functional argument to pass the relative cached time before `Supplier` iface was introduced.
1 parent be8a531 commit 1316825

File tree

11 files changed

+22
-61
lines changed

11 files changed

+22
-61
lines changed

buildSrc/src/main/resources/forbidden/es-server-signatures.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ java.nio.channels.FileChannel#read(java.nio.ByteBuffer, long)
6161
@defaultMessage Use Lucene.parseLenient instead it strips off minor version
6262
org.apache.lucene.util.Version#parseLeniently(java.lang.String)
6363

64-
@defaultMessage Spawns a new thread which is solely under lucenes control use ThreadPool#estimatedTimeInMillisCounter instead
64+
@defaultMessage Spawns a new thread which is solely under lucenes control use ThreadPool#relativeTimeInMillis instead
6565
org.apache.lucene.search.TimeLimitingCollector#getGlobalTimerThread()
6666
org.apache.lucene.search.TimeLimitingCollector#getGlobalCounter()
6767

@@ -146,4 +146,4 @@ org.apache.logging.log4j.Logger#warn(java.lang.Object, java.lang.Throwable)
146146
org.apache.logging.log4j.Logger#error(java.lang.Object)
147147
org.apache.logging.log4j.Logger#error(java.lang.Object, java.lang.Throwable)
148148
org.apache.logging.log4j.Logger#fatal(java.lang.Object)
149-
org.apache.logging.log4j.Logger#fatal(java.lang.Object, java.lang.Throwable)
149+
org.apache.logging.log4j.Logger#fatal(java.lang.Object, java.lang.Throwable)

server/src/main/java/org/elasticsearch/search/DefaultSearchContext.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.apache.lucene.search.Collector;
2525
import org.apache.lucene.search.FieldDoc;
2626
import org.apache.lucene.search.Query;
27-
import org.apache.lucene.util.Counter;
2827
import org.elasticsearch.Version;
2928
import org.elasticsearch.action.search.SearchTask;
3029
import org.elasticsearch.action.search.SearchType;
@@ -82,13 +81,14 @@
8281
import java.util.HashMap;
8382
import java.util.List;
8483
import java.util.Map;
84+
import java.util.function.LongSupplier;
8585

8686
final class DefaultSearchContext extends SearchContext {
8787

8888
private final long id;
8989
private final ShardSearchRequest request;
9090
private final SearchShardTarget shardTarget;
91-
private final Counter timeEstimateCounter;
91+
private final LongSupplier relativeTimeSupplier;
9292
private SearchType searchType;
9393
private final Engine.Searcher engineSearcher;
9494
private final BigArrays bigArrays;
@@ -159,7 +159,7 @@ final class DefaultSearchContext extends SearchContext {
159159

160160
DefaultSearchContext(long id, ShardSearchRequest request, SearchShardTarget shardTarget,
161161
Engine.Searcher engineSearcher, ClusterService clusterService, IndexService indexService,
162-
IndexShard indexShard, BigArrays bigArrays, Counter timeEstimateCounter, TimeValue timeout,
162+
IndexShard indexShard, BigArrays bigArrays, LongSupplier relativeTimeSupplier, TimeValue timeout,
163163
FetchPhase fetchPhase, Version minNodeVersion) {
164164
this.id = id;
165165
this.request = request;
@@ -176,7 +176,7 @@ final class DefaultSearchContext extends SearchContext {
176176
this.indexService = indexService;
177177
this.clusterService = clusterService;
178178
this.searcher = new ContextIndexSearcher(engineSearcher, indexService.cache().query(), indexShard.getQueryCachingPolicy());
179-
this.timeEstimateCounter = timeEstimateCounter;
179+
this.relativeTimeSupplier = relativeTimeSupplier;
180180
this.timeout = timeout;
181181
this.minNodeVersion = minNodeVersion;
182182
queryShardContext = indexService.newQueryShardContext(request.shardId().id(), searcher.getIndexReader(), request::nowInMillis,
@@ -804,8 +804,8 @@ public ObjectMapper getObjectMapper(String name) {
804804
}
805805

806806
@Override
807-
public Counter timeEstimateCounter() {
808-
return timeEstimateCounter;
807+
public long getRelativeTimeInMillis() {
808+
return relativeTimeSupplier.getAsLong();
809809
}
810810

811811
@Override

server/src/main/java/org/elasticsearch/search/SearchService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ private DefaultSearchContext createSearchContext(ShardSearchRequest request, Tim
648648
Engine.Searcher engineSearcher = indexShard.acquireSearcher(source);
649649

650650
final DefaultSearchContext searchContext = new DefaultSearchContext(idGenerator.incrementAndGet(), request, shardTarget,
651-
engineSearcher, clusterService, indexService, indexShard, bigArrays, threadPool.estimatedTimeInMillisCounter(), timeout,
651+
engineSearcher, clusterService, indexService, indexShard, bigArrays, threadPool::relativeTimeInMillis, timeout,
652652
fetchPhase, clusterService.state().nodes().getMinNodeVersion());
653653
boolean success = false;
654654
try {

server/src/main/java/org/elasticsearch/search/internal/FilteredSearchContext.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.lucene.search.Collector;
2323
import org.apache.lucene.search.FieldDoc;
2424
import org.apache.lucene.search.Query;
25-
import org.apache.lucene.util.Counter;
2625
import org.elasticsearch.action.search.SearchTask;
2726
import org.elasticsearch.action.search.SearchType;
2827
import org.elasticsearch.common.unit.TimeValue;
@@ -508,8 +507,8 @@ public ObjectMapper getObjectMapper(String name) {
508507
}
509508

510509
@Override
511-
public Counter timeEstimateCounter() {
512-
return in.timeEstimateCounter();
510+
public long getRelativeTimeInMillis() {
511+
return in.getRelativeTimeInMillis();
513512
}
514513

515514
@Override

server/src/main/java/org/elasticsearch/search/internal/SearchContext.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.lucene.search.Collector;
2323
import org.apache.lucene.search.FieldDoc;
2424
import org.apache.lucene.search.Query;
25-
import org.apache.lucene.util.Counter;
2625
import org.elasticsearch.action.search.SearchTask;
2726
import org.elasticsearch.action.search.SearchType;
2827
import org.elasticsearch.common.Nullable;
@@ -395,7 +394,11 @@ public final boolean hasOnlySuggest() {
395394

396395
public abstract ObjectMapper getObjectMapper(String name);
397396

398-
public abstract Counter timeEstimateCounter();
397+
/**
398+
* Returns time in milliseconds that can be used for relative time calculations.
399+
* WARN: This is not the epoch time.
400+
*/
401+
public abstract long getRelativeTimeInMillis();
399402

400403
/** Return a view of the additional query collectors that should be run for this context. */
401404
public abstract Map<Class<?>, Collector> queryCollectors();

server/src/main/java/org/elasticsearch/search/internal/SubSearchContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package org.elasticsearch.search.internal;
2020

2121
import org.apache.lucene.search.Query;
22-
import org.apache.lucene.util.Counter;
2322
import org.elasticsearch.common.unit.TimeValue;
2423
import org.elasticsearch.index.query.ParsedQuery;
2524
import org.elasticsearch.search.aggregations.SearchContextAggregations;
@@ -354,7 +353,7 @@ public FetchSearchResult fetchResult() {
354353
}
355354

356355
@Override
357-
public Counter timeEstimateCounter() {
356+
public long getRelativeTimeInMillis() {
358357
throw new UnsupportedOperationException("Not supported");
359358
}
360359

server/src/main/java/org/elasticsearch/search/query/QueryPhase.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.apache.lucene.search.Sort;
3838
import org.apache.lucene.search.TopDocs;
3939
import org.apache.lucene.search.TotalHits;
40-
import org.apache.lucene.util.Counter;
4140
import org.elasticsearch.action.search.SearchTask;
4241
import org.elasticsearch.common.lucene.Lucene;
4342
import org.elasticsearch.common.lucene.search.TopDocsAndMaxScore;
@@ -213,12 +212,11 @@ static boolean execute(SearchContext searchContext,
213212

214213
final Runnable timeoutRunnable;
215214
if (timeoutSet) {
216-
final Counter counter = searchContext.timeEstimateCounter();
217-
final long startTime = counter.get();
215+
final long startTime = searchContext.getRelativeTimeInMillis();
218216
final long timeout = searchContext.timeout().millis();
219217
final long maxTime = startTime + timeout;
220218
timeoutRunnable = () -> {
221-
final long time = counter.get();
219+
final long time = searchContext.getRelativeTimeInMillis();
222220
if (time > maxTime) {
223221
throw new TimeExceededException();
224222
}

server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.logging.log4j.LogManager;
2323
import org.apache.logging.log4j.Logger;
2424
import org.apache.logging.log4j.message.ParameterizedMessage;
25-
import org.apache.lucene.util.Counter;
2625
import org.elasticsearch.Version;
2726
import org.elasticsearch.common.Nullable;
2827
import org.elasticsearch.common.io.stream.StreamInput;
@@ -252,10 +251,6 @@ public long absoluteTimeInMillis() {
252251
return cachedTimeThread.absoluteTimeInMillis();
253252
}
254253

255-
public Counter estimatedTimeInMillisCounter() {
256-
return cachedTimeThread.counter;
257-
}
258-
259254
public ThreadPoolInfo info() {
260255
return threadPoolInfo;
261256
}
@@ -538,7 +533,6 @@ public String toString() {
538533
static class CachedTimeThread extends Thread {
539534

540535
final long interval;
541-
final TimeCounter counter;
542536
volatile boolean running = true;
543537
volatile long relativeMillis;
544538
volatile long absoluteMillis;
@@ -548,7 +542,6 @@ static class CachedTimeThread extends Thread {
548542
this.interval = interval;
549543
this.relativeMillis = TimeValue.nsecToMSec(System.nanoTime());
550544
this.absoluteMillis = System.currentTimeMillis();
551-
this.counter = new TimeCounter();
552545
setDaemon(true);
553546
}
554547

@@ -581,19 +574,6 @@ public void run() {
581574
}
582575
}
583576
}
584-
585-
private class TimeCounter extends Counter {
586-
587-
@Override
588-
public long addAndGet(long delta) {
589-
throw new UnsupportedOperationException();
590-
}
591-
592-
@Override
593-
public long get() {
594-
return relativeMillis;
595-
}
596-
}
597577
}
598578

599579
static class ExecutorHolder {

server/src/test/java/org/elasticsearch/versioning/SimpleVersioningIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ public void testDeleteNotLost() throws Exception {
741741
.getVersion(),
742742
equalTo(-1L));
743743

744-
// ThreadPool.estimatedTimeInMillis has default granularity of 200 msec, so we must sleep at least that long; sleep much longer in
744+
// ThreadPool.relativeTimeInMillis has default granularity of 200 msec, so we must sleep at least that long; sleep much longer in
745745
// case system is busy:
746746
Thread.sleep(1000);
747747

test/framework/src/main/java/org/elasticsearch/cluster/coordination/DeterministicTaskQueue.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.carrotsearch.randomizedtesting.generators.RandomNumbers;
2323
import org.apache.logging.log4j.LogManager;
2424
import org.apache.logging.log4j.Logger;
25-
import org.apache.lucene.util.Counter;
2625
import org.elasticsearch.common.settings.Settings;
2726
import org.elasticsearch.common.unit.TimeValue;
2827
import org.elasticsearch.threadpool.ThreadPool;
@@ -303,21 +302,6 @@ public long absoluteTimeInMillis() {
303302
return currentTimeMillis;
304303
}
305304

306-
@Override
307-
public Counter estimatedTimeInMillisCounter() {
308-
return new Counter() {
309-
@Override
310-
public long addAndGet(long delta) {
311-
throw new UnsupportedOperationException();
312-
}
313-
314-
@Override
315-
public long get() {
316-
return currentTimeMillis;
317-
}
318-
};
319-
}
320-
321305
@Override
322306
public ThreadPoolInfo info() {
323307
throw new UnsupportedOperationException();

test/framework/src/main/java/org/elasticsearch/test/TestSearchContext.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.apache.lucene.search.Collector;
2222
import org.apache.lucene.search.FieldDoc;
2323
import org.apache.lucene.search.Query;
24-
import org.apache.lucene.util.Counter;
2524
import org.elasticsearch.action.search.SearchTask;
2625
import org.elasticsearch.action.search.SearchType;
2726
import org.elasticsearch.common.unit.TimeValue;
@@ -73,7 +72,6 @@ public class TestSearchContext extends SearchContext {
7372
final ThreadPool threadPool;
7473
final Map<Class<?>, Collector> queryCollectors = new HashMap<>();
7574
final IndexShard indexShard;
76-
final Counter timeEstimateCounter = Counter.newCounter();
7775
final QuerySearchResult queryResult = new QuerySearchResult();
7876
final QueryShardContext queryShardContext;
7977
ParsedQuery originalQuery;
@@ -593,8 +591,8 @@ public void doClose() {
593591
}
594592

595593
@Override
596-
public Counter timeEstimateCounter() {
597-
return timeEstimateCounter;
594+
public long getRelativeTimeInMillis() {
595+
return 0L;
598596
}
599597

600598
@Override

0 commit comments

Comments
 (0)