Skip to content

Commit b5aee20

Browse files
committed
Merge pull request #16610 from s1monw/test_indices_request_cache
Refactor IndicesRequestCache to make it testable.
2 parents 691c5c4 + d538dd6 commit b5aee20

29 files changed

+934
-526
lines changed

Diff for: buildSrc/src/main/resources/checkstyle_suppressions.xml

-3
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,6 @@
649649
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]analysis[/\\]PreBuiltCacheFactory.java" checks="LineLength" />
650650
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]analysis[/\\]PreBuiltTokenFilters.java" checks="LineLength" />
651651
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]breaker[/\\]HierarchyCircuitBreakerService.java" checks="LineLength" />
652-
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]cache[/\\]query[/\\]terms[/\\]TermsLookup.java" checks="LineLength" />
653-
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]cache[/\\]request[/\\]IndicesRequestCache.java" checks="LineLength" />
654652
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]cluster[/\\]IndicesClusterStateService.java" checks="LineLength" />
655653
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]fielddata[/\\]cache[/\\]IndicesFieldDataCache.java" checks="LineLength" />
656654
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]fielddata[/\\]cache[/\\]IndicesFieldDataCacheListener.java" checks="LineLength" />
@@ -1306,7 +1304,6 @@
13061304
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]analysis[/\\]PreBuiltAnalyzerIntegrationIT.java" checks="LineLength" />
13071305
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]analyze[/\\]AnalyzeActionIT.java" checks="LineLength" />
13081306
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]analyze[/\\]HunspellServiceIT.java" checks="LineLength" />
1309-
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]cache[/\\]query[/\\]IndicesRequestCacheIT.java" checks="LineLength" />
13101307
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]exists[/\\]indices[/\\]IndicesExistsIT.java" checks="LineLength" />
13111308
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]exists[/\\]types[/\\]TypesExistsIT.java" checks="LineLength" />
13121309
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]indices[/\\]flush[/\\]FlushIT.java" checks="LineLength" />

Diff for: core/src/main/java/org/elasticsearch/action/admin/indices/cache/clear/TransportClearIndicesCacheAction.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.elasticsearch.index.IndexService;
3636
import org.elasticsearch.index.shard.IndexShard;
3737
import org.elasticsearch.indices.IndicesService;
38-
import org.elasticsearch.indices.cache.request.IndicesRequestCache;
3938
import org.elasticsearch.threadpool.ThreadPool;
4039
import org.elasticsearch.transport.TransportService;
4140

@@ -98,7 +97,7 @@ protected EmptyResult shardOperation(ClearIndicesCacheRequest request, ShardRout
9897
}
9998
if (request.requestCache()) {
10099
clearedAtLeastOne = true;
101-
indicesService.getIndicesRequestCache().clear(shard);
100+
indicesService.clearRequestCache(shard);
102101
}
103102
if (request.recycler()) {
104103
logger.debug("Clear CacheRecycler on index [{}]", service.index());
@@ -114,7 +113,7 @@ protected EmptyResult shardOperation(ClearIndicesCacheRequest request, ShardRout
114113
} else {
115114
service.cache().clear("api");
116115
service.fieldData().clear();
117-
indicesService.getIndicesRequestCache().clear(shard);
116+
indicesService.clearRequestCache(shard);
118117
}
119118
}
120119
}

Diff for: core/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStats.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.elasticsearch.common.unit.ByteSizeValue;
2727
import org.elasticsearch.common.xcontent.ToXContent;
2828
import org.elasticsearch.common.xcontent.XContentBuilder;
29-
import org.elasticsearch.index.IndexService;
3029
import org.elasticsearch.index.cache.query.QueryCacheStats;
3130
import org.elasticsearch.index.cache.request.RequestCacheStats;
3231
import org.elasticsearch.index.engine.SegmentsStats;
@@ -41,13 +40,11 @@
4140
import org.elasticsearch.index.search.stats.SearchStats;
4241
import org.elasticsearch.index.shard.DocsStats;
4342
import org.elasticsearch.index.shard.IndexShard;
44-
import org.elasticsearch.index.shard.ShardId;
4543
import org.elasticsearch.index.store.StoreStats;
4644
import org.elasticsearch.index.suggest.stats.SuggestStats;
4745
import org.elasticsearch.index.translog.TranslogStats;
4846
import org.elasticsearch.index.warmer.WarmerStats;
49-
import org.elasticsearch.indices.IndicesService;
50-
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
47+
import org.elasticsearch.indices.IndicesQueryCache;
5148
import org.elasticsearch.search.suggest.completion.CompletionStats;
5249

5350
import java.io.IOException;

Diff for: core/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
import org.elasticsearch.indices.IndicesService;
6666
import org.elasticsearch.indices.analysis.HunspellService;
6767
import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService;
68-
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
69-
import org.elasticsearch.indices.cache.request.IndicesRequestCache;
68+
import org.elasticsearch.indices.IndicesQueryCache;
69+
import org.elasticsearch.indices.IndicesRequestCache;
7070
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
7171
import org.elasticsearch.indices.recovery.RecoverySettings;
7272
import org.elasticsearch.indices.store.IndicesStore;
@@ -307,11 +307,10 @@ public void apply(Settings value, Settings current, Settings previous) {
307307
ScriptService.SCRIPT_CACHE_SIZE_SETTING,
308308
ScriptService.SCRIPT_CACHE_EXPIRE_SETTING,
309309
ScriptService.SCRIPT_AUTO_RELOAD_ENABLED_SETTING,
310-
IndicesService.INDICES_FIELDDATA_CLEAN_INTERVAL_SETTING,
310+
IndicesService.INDICES_CACHE_CLEAN_INTERVAL_SETTING,
311311
IndicesFieldDataCache.INDICES_FIELDDATA_CACHE_SIZE_KEY,
312312
IndicesRequestCache.INDICES_CACHE_QUERY_SIZE,
313313
IndicesRequestCache.INDICES_CACHE_QUERY_EXPIRE,
314-
IndicesRequestCache.INDICES_CACHE_REQUEST_CLEAN_INTERVAL,
315314
HunspellService.HUNSPELL_LAZY_LOAD,
316315
HunspellService.HUNSPELL_IGNORE_CASE,
317316
HunspellService.HUNSPELL_DICTIONARY_OPTIONS,

Diff for: core/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import org.elasticsearch.index.store.IndexStore;
4040
import org.elasticsearch.index.store.Store;
4141
import org.elasticsearch.index.IndexWarmer;
42-
import org.elasticsearch.indices.cache.request.IndicesRequestCache;
42+
import org.elasticsearch.indices.IndicesRequestCache;
4343

4444
import java.util.Arrays;
4545
import java.util.Collections;

Diff for: core/src/main/java/org/elasticsearch/index/IndexModule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import org.elasticsearch.index.similarity.SimilarityService;
3838
import org.elasticsearch.index.store.IndexStore;
3939
import org.elasticsearch.index.store.IndexStoreConfig;
40-
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
40+
import org.elasticsearch.indices.IndicesQueryCache;
4141
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
4242
import org.elasticsearch.indices.mapper.MapperRegistry;
4343

Diff for: core/src/main/java/org/elasticsearch/index/cache/query/index/IndexQueryCache.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.elasticsearch.index.AbstractIndexComponent;
2626
import org.elasticsearch.index.IndexSettings;
2727
import org.elasticsearch.index.cache.query.QueryCache;
28-
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
28+
import org.elasticsearch.indices.IndicesQueryCache;
2929

3030
/**
3131
* The index-level query cache. This class mostly delegates to the node-level

Diff for: core/src/main/java/org/elasticsearch/index/cache/request/ShardRequestCache.java

+10-14
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,24 @@
1919

2020
package org.elasticsearch.index.cache.request;
2121

22+
import org.apache.lucene.util.Accountable;
2223
import org.elasticsearch.common.cache.RemovalListener;
2324
import org.elasticsearch.common.cache.RemovalNotification;
2425
import org.elasticsearch.common.metrics.CounterMetric;
2526
import org.elasticsearch.index.IndexSettings;
2627
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
2728
import org.elasticsearch.index.shard.ShardId;
28-
import org.elasticsearch.indices.cache.request.IndicesRequestCache;
29+
import org.elasticsearch.indices.IndicesRequestCache;
2930

3031
/**
3132
*/
32-
public class ShardRequestCache extends AbstractIndexShardComponent implements RemovalListener<IndicesRequestCache.Key, IndicesRequestCache.Value> {
33+
public final class ShardRequestCache {
3334

3435
final CounterMetric evictionsMetric = new CounterMetric();
3536
final CounterMetric totalMetric = new CounterMetric();
3637
final CounterMetric hitCount = new CounterMetric();
3738
final CounterMetric missCount = new CounterMetric();
3839

39-
public ShardRequestCache(ShardId shardId, IndexSettings indexSettings) {
40-
super(shardId, indexSettings);
41-
}
42-
4340
public RequestCacheStats stats() {
4441
return new RequestCacheStats(totalMetric.count(), evictionsMetric.count(), hitCount.count(), missCount.count());
4542
}
@@ -52,21 +49,20 @@ public void onMiss() {
5249
missCount.inc();
5350
}
5451

55-
public void onCached(IndicesRequestCache.Key key, IndicesRequestCache.Value value) {
52+
public void onCached(Accountable key, Accountable value) {
5653
totalMetric.inc(key.ramBytesUsed() + value.ramBytesUsed());
5754
}
5855

59-
@Override
60-
public void onRemoval(RemovalNotification<IndicesRequestCache.Key, IndicesRequestCache.Value> removalNotification) {
61-
if (removalNotification.getRemovalReason() == RemovalNotification.RemovalReason.EVICTED) {
56+
public void onRemoval(Accountable key, Accountable value, boolean evicted) {
57+
if (evicted) {
6258
evictionsMetric.inc();
6359
}
6460
long dec = 0;
65-
if (removalNotification.getKey() != null) {
66-
dec += removalNotification.getKey().ramBytesUsed();
61+
if (key != null) {
62+
dec += key.ramBytesUsed();
6763
}
68-
if (removalNotification.getValue() != null) {
69-
dec += removalNotification.getValue().ramBytesUsed();
64+
if (value != null) {
65+
dec += value.ramBytesUsed();
7066
}
7167
totalMetric.dec(dec);
7268
}

Diff for: core/src/main/java/org/elasticsearch/index/query/QueryBuilders.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
2828
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilder;
2929
import org.elasticsearch.index.search.MatchQuery;
30-
import org.elasticsearch.indices.cache.query.terms.TermsLookup;
30+
import org.elasticsearch.indices.TermsLookup;
3131
import org.elasticsearch.script.Script;
3232
import org.elasticsearch.script.ScriptService;
3333
import org.elasticsearch.script.Template;

Diff for: core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
import org.elasticsearch.common.xcontent.XContentBuilder;
3838
import org.elasticsearch.common.xcontent.support.XContentMapValues;
3939
import org.elasticsearch.index.mapper.MappedFieldType;
40-
import org.elasticsearch.indices.cache.query.terms.TermsLookup;
41-
import org.elasticsearch.search.internal.SearchContext;
40+
import org.elasticsearch.indices.TermsLookup;
4241

4342
import java.io.IOException;
4443
import java.util.ArrayList;

Diff for: core/src/main/java/org/elasticsearch/index/query/TermsQueryParser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import org.elasticsearch.common.ParsingException;
2323
import org.elasticsearch.common.xcontent.XContentParser;
24-
import org.elasticsearch.indices.cache.query.terms.TermsLookup;
24+
import org.elasticsearch.indices.TermsLookup;
2525

2626
import java.io.IOException;
2727
import java.util.ArrayList;

Diff for: core/src/main/java/org/elasticsearch/index/shard/IndexShard.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public IndexShard(ShardId shardId, IndexSettings indexSettings, ShardPath path,
224224
this.getService = new ShardGetService(indexSettings, this, mapperService);
225225
this.searchService = new ShardSearchStats(slowLog);
226226
this.shardWarmerService = new ShardIndexWarmerService(shardId, indexSettings);
227-
this.shardQueryCache = new ShardRequestCache(shardId, indexSettings);
227+
this.shardQueryCache = new ShardRequestCache();
228228
this.shardFieldData = new ShardFieldData();
229229
this.indexFieldDataService = indexFieldDataService;
230230
this.shardBitsetFilterCache = new ShardBitsetFilterCache(shardId, indexSettings);

Diff for: core/src/main/java/org/elasticsearch/indices/cache/query/IndicesQueryCache.java renamed to core/src/main/java/org/elasticsearch/indices/IndicesQueryCache.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* under the License.
1818
*/
1919

20-
package org.elasticsearch.indices.cache.query;
20+
package org.elasticsearch.indices;
2121

2222
import org.apache.lucene.index.LeafReaderContext;
2323
import org.apache.lucene.index.Term;

0 commit comments

Comments
 (0)