From ca0eb2708ebfbafbacbc71466e175cfe1f1fe695 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Thu, 3 Apr 2025 16:47:59 +0300 Subject: [PATCH 01/13] Add DfsPhase metrics --- .../monitor/metrics/IndicesMetricsIT.java | 10 +++ .../search/stats/SearchStatsIT.java | 2 + .../index/search/stats/SearchStats.java | 72 ++++++++++++++++++- .../index/search/stats/ShardSearchStats.java | 28 ++++++++ .../index/shard/SearchOperationListener.java | 55 ++++++++++++++ .../monitor/metrics/IndicesMetrics.java | 26 ++++++- .../elasticsearch/search/SearchService.java | 13 +++- .../cluster/node/stats/NodeStatsTests.java | 4 ++ .../index/search/stats/SearchStatsTests.java | 9 ++- 9 files changed, 213 insertions(+), 6 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java index fee2c0494365e..489158f636918 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java @@ -68,6 +68,9 @@ protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) { static final String STANDARD_INDEX_COUNT = "es.indices.standard.total"; static final String STANDARD_BYTES_SIZE = "es.indices.standard.size"; static final String STANDARD_DOCS_COUNT = "es.indices.standard.docs.total"; + static final String STANDARD_DFS_COUNT = "es.indices.standard.dfs.total"; + static final String STANDARD_DFS_TIME = "es.indices.standard.dfs.time"; + static final String STANDARD_DFS_FAILURE = "es.indices.standard.dfs.failure.total"; static final String STANDARD_QUERY_COUNT = "es.indices.standard.query.total"; static final String STANDARD_QUERY_TIME = "es.indices.standard.query.time"; static final String STANDARD_QUERY_FAILURE = "es.indices.standard.query.failure.total"; @@ -245,6 +248,10 @@ public void testIndicesMetrics() { telemetry, 1, Map.of( + STANDARD_DFS_COUNT, + equalTo(search1.getDfsCount()), + STANDARD_DFS_TIME, + equalTo(search1.getDfsTimeInMillis()), STANDARD_QUERY_COUNT, equalTo(numStandardIndices), STANDARD_QUERY_TIME, @@ -266,6 +273,7 @@ public void testIndicesMetrics() { ) ); + client(searchNode).prepareSearch("time*").setPreference(preference).setSize(100).get().decRef(); var search2 = indicesService.stats(CommonStatsFlags.ALL, false).getSearch().getTotal(); collectThenAssertMetrics( @@ -334,6 +342,8 @@ public void testIndicesMetrics() { telemetry, 4, Map.of( + STANDARD_DFS_FAILURE, + equalTo(0L), STANDARD_QUERY_FAILURE, equalTo(0L), STANDARD_FETCH_FAILURE, diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java index ee7f76e6be3f3..821d7f0454fe9 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java @@ -130,6 +130,8 @@ public void testSimpleStats() throws Exception { IndicesStatsResponse indicesStats = indicesAdmin().prepareStats().get(); logger.debug("###### indices search stats: {}", indicesStats.getTotal().getSearch()); + assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(),equalTo(0L)); + assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryTimeInMillis(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getFetchCount(), greaterThan(0L)); diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index 8b19d72ccc09d..985fe7ed2b73e 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -30,6 +30,10 @@ public class SearchStats implements Writeable, ToXContentFragment { public static class Stats implements Writeable, ToXContentFragment { + private long dfsCount; + private long dfsTimeInMillis; + private long dfsCurrent; + private long queryCount; private long queryTimeInMillis; private long queryCurrent; @@ -46,6 +50,7 @@ public static class Stats implements Writeable, ToXContentFragment { private long suggestTimeInMillis; private long suggestCurrent; + private long dfsFailure; private long queryFailure; private long fetchFailure; @@ -54,6 +59,10 @@ private Stats() { } public Stats( + long dfsCount, + long dfsTimeInMillis, + long dfsCurrent, + long dfsFailure, long queryCount, long queryTimeInMillis, long queryCurrent, @@ -69,6 +78,11 @@ public Stats( long suggestTimeInMillis, long suggestCurrent ) { + this.dfsCount = dfsCount; + this.dfsTimeInMillis = dfsTimeInMillis; + this.dfsCurrent = dfsCurrent; + this.dfsFailure = dfsFailure; + this.queryCount = queryCount; this.queryTimeInMillis = queryTimeInMillis; this.queryCurrent = queryCurrent; @@ -89,6 +103,10 @@ public Stats( } private Stats(StreamInput in) throws IOException { + dfsCount = in.readVLong(); + dfsTimeInMillis = in.readVLong(); + dfsCurrent = in.readVLong(); + queryCount = in.readVLong(); queryTimeInMillis = in.readVLong(); queryCurrent = in.readVLong(); @@ -113,6 +131,10 @@ private Stats(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { + out.writeVLong(dfsCount); + out.writeVLong(dfsTimeInMillis); + out.writeVLong(dfsCurrent); + out.writeVLong(queryCount); out.writeVLong(queryTimeInMillis); out.writeVLong(queryCurrent); @@ -130,12 +152,18 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(suggestCurrent); if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { + out.writeVLong(dfsFailure); out.writeVLong(queryFailure); out.writeVLong(fetchFailure); } } public void add(Stats stats) { + dfsCount += stats.dfsCount; + dfsTimeInMillis += stats.dfsTimeInMillis; + dfsCurrent += stats.dfsCurrent; + dfsFailure += stats.dfsFailure; + queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; queryCurrent += stats.queryCurrent; @@ -156,6 +184,10 @@ public void add(Stats stats) { } public void addForClosingShard(Stats stats) { + dfsCount += stats.dfsCount; + dfsTimeInMillis += stats.dfsTimeInMillis; + dfsFailure += stats.dfsFailure; + queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; queryFailure += stats.queryFailure; @@ -173,6 +205,26 @@ public void addForClosingShard(Stats stats) { suggestTimeInMillis += stats.suggestTimeInMillis; } + public long getDfsCount() { + return dfsCount; + } + + public TimeValue getDfsTime() { + return new TimeValue(dfsTimeInMillis); + } + + public long getDfsTimeInMillis() { + return dfsTimeInMillis; + } + + public long getDfsCurrent() { + return dfsCurrent; + } + + public long getDfsFailure() { + return dfsFailure; + } + public long getQueryCount() { return queryCount; } @@ -251,6 +303,11 @@ public static Stats readStats(StreamInput in) throws IOException { @Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { + builder.field(Fields.DFS_TOTAL, dfsCount); + builder.humanReadableField(Fields.DFS_TIME_IN_MILLIS, Fields.DFS_TIME, getDfsTime()); + builder.field(Fields.DFS_CURRENT, dfsCurrent); + builder.field(Fields.DFS_FAILURE, dfsFailure); + builder.field(Fields.QUERY_TOTAL, queryCount); builder.humanReadableField(Fields.QUERY_TIME_IN_MILLIS, Fields.QUERY_TIME, getQueryTime()); builder.field(Fields.QUERY_CURRENT, queryCurrent); @@ -277,7 +334,11 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Stats that = (Stats) o; - return queryCount == that.queryCount + return dfsCount == that.dfsCount + && dfsTimeInMillis == that.dfsTimeInMillis + && dfsCurrent == that.dfsCurrent + && dfsFailure == that.dfsFailure + && queryCount == that.queryCount && queryTimeInMillis == that.queryTimeInMillis && queryCurrent == that.queryCurrent && queryFailure == that.queryFailure @@ -296,6 +357,10 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + dfsCount, + dfsTimeInMillis, + dfsCurrent, + dfsFailure, queryCount, queryTimeInMillis, queryCurrent, @@ -409,6 +474,11 @@ static final class Fields { static final String SEARCH = "search"; static final String OPEN_CONTEXTS = "open_contexts"; static final String GROUPS = "groups"; + static final String DFS_TOTAL = "dfs_total"; + static final String DFS_TIME = "dfs_time"; + static final String DFS_TIME_IN_MILLIS = "dfs_time_in_millis"; + static final String DFS_CURRENT = "dfs_current"; + static final String DFS_FAILURE = "dfs_failure"; static final String QUERY_TOTAL = "query_total"; static final String QUERY_TIME = "query_time"; static final String QUERY_TIME_IN_MILLIS = "query_time_in_millis"; diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java index 6e6f744f6b719..dc73c979fdc2c 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java @@ -107,6 +107,27 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) { }); } + @Override + public void onPreDfsPhase(SearchContext searchContext) { + computeStats(searchContext, statsHolder -> statsHolder.dfsCurrent.inc()); + } + + @Override + public void onDfsPhase(SearchContext searchContext, long tookInNanos) { + computeStats(searchContext, statsHolder -> { + statsHolder.dfsMetric.inc(tookInNanos); + statsHolder.dfsCurrent.dec(); + }); + } + + @Override + public void onFailedDfsPhase(SearchContext searchContext) { + computeStats(searchContext, statsHolder -> { + statsHolder.dfsCurrent.dec(); + statsHolder.dfsFailure.inc(); + }); + } + private void computeStats(SearchContext searchContext, Consumer consumer) { consumer.accept(totalStats); var groupStats = searchContext.groupStats(); @@ -154,6 +175,7 @@ public void onFreeScrollContext(ReaderContext readerContext) { } static final class StatsHolder { + final MeanMetric dfsMetric = new MeanMetric(); final MeanMetric queryMetric = new MeanMetric(); final MeanMetric fetchMetric = new MeanMetric(); /* We store scroll statistics in microseconds because with nanoseconds we run the risk of overflowing the total stats if there are @@ -165,16 +187,22 @@ static final class StatsHolder { */ final MeanMetric scrollMetric = new MeanMetric(); final MeanMetric suggestMetric = new MeanMetric(); + final CounterMetric dfsCurrent = new CounterMetric(); final CounterMetric queryCurrent = new CounterMetric(); final CounterMetric fetchCurrent = new CounterMetric(); final CounterMetric scrollCurrent = new CounterMetric(); final CounterMetric suggestCurrent = new CounterMetric(); + final CounterMetric dfsFailure = new CounterMetric(); final CounterMetric queryFailure = new CounterMetric(); final CounterMetric fetchFailure = new CounterMetric(); SearchStats.Stats stats() { return new SearchStats.Stats( + dfsMetric.count(), + TimeUnit.NANOSECONDS.toMillis(dfsMetric.sum()), + dfsCurrent.count(), + dfsFailure.count(), queryMetric.count(), TimeUnit.NANOSECONDS.toMillis(queryMetric.sum()), queryCurrent.count(), diff --git a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java index e8d8eec82eafa..0dbc51f35faec 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java +++ b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java @@ -65,6 +65,28 @@ default void onFailedFetchPhase(SearchContext searchContext) {} */ default void onFetchPhase(SearchContext searchContext, long tookInNanos) {} + /** + * Executed before the DFS phase is executed + * @param searchContext the current search context + */ + default void onPreDfsPhase(SearchContext searchContext) {} + + /** + * Executed after the query DFS successfully finished. + * Note: this is not invoked if the DFS phase execution failed. + * @param searchContext the current search context + * @param tookInNanos the number of nanoseconds the query execution took + * + * @see #onFailedQueryPhase(SearchContext) + */ + default void onDfsPhase(SearchContext searchContext, long tookInNanos) {} + + /** + * Executed if a dfs phased failed. + * @param searchContext the current search context + */ + default void onFailedDfsPhase(SearchContext searchContext) {} + /** * Executed when a new reader context was created * @param readerContext the created context @@ -182,6 +204,39 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) { } } + @Override + public void onPreDfsPhase(SearchContext searchContext) { + for (SearchOperationListener listener : listeners) { + try { + listener.onPreDfsPhase(searchContext); + } catch (Exception e) { + logger.warn(() -> "onPreDfsPhase listener [" + listener + "] failed", e); + } + } + } + + @Override + public void onFailedDfsPhase(SearchContext searchContext) { + for (SearchOperationListener listener : listeners) { + try { + listener.onFailedDfsPhase(searchContext); + } catch (Exception e) { + logger.warn(() -> "onFailedDfsPhase listener [" + listener + "] failed", e); + } + } + } + + @Override + public void onDfsPhase(SearchContext searchContext, long tookInNanos) { + for (SearchOperationListener listener : listeners) { + try { + listener.onDfsPhase(searchContext, tookInNanos); + } catch (Exception e) { + logger.warn(() -> "onDfsPhase listener [" + listener + "] failed", e); + } + } + } + @Override public void onNewReaderContext(ReaderContext readerContext) { for (SearchOperationListener listener : listeners) { diff --git a/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java b/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java index dfaf6535e4d85..df0451850287d 100644 --- a/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java +++ b/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java @@ -53,7 +53,7 @@ public IndicesMetrics(MeterRegistry meterRegistry, IndicesService indicesService } private static List registerAsyncMetrics(MeterRegistry registry, IndicesStatsCache cache) { - final int TOTAL_METRICS = 52; + final int TOTAL_METRICS = 64; List metrics = new ArrayList<>(TOTAL_METRICS); for (IndexMode indexMode : IndexMode.values()) { String name = indexMode.getName(); @@ -131,6 +131,30 @@ private static List registerAsyncMetrics(MeterRegistry registry, diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getFetchFailure()) ) ); + metrics.add( + registry.registerLongGauge( + "es.indices." + name + ".dfs.total", + "current fetches of " + name + " indices", + "unit", + diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsCount()) + ) + ); + metrics.add( + registry.registerLongGauge( + "es.indices." + name + ".dfs.time", + "current fetch time of " + name + " indices", + "ms", + diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsTimeInMillis()) + ) + ); + metrics.add( + registry.registerLongGauge( + "es.indices." + name + ".dfs.failure.total", + "current fetch failures of " + name + " indices", + "unit", + diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsFailure()) + ) + ); // indexing metrics.add( registry.registerLongGauge( diff --git a/server/src/main/java/org/elasticsearch/search/SearchService.java b/server/src/main/java/org/elasticsearch/search/SearchService.java index fb904896765fc..0d0eca9777980 100644 --- a/server/src/main/java/org/elasticsearch/search/SearchService.java +++ b/server/src/main/java/org/elasticsearch/search/SearchService.java @@ -604,7 +604,18 @@ private DfsSearchResult executeDfsPhase(ShardSearchRequest request, SearchShardT Releasable ignored = readerContext.markAsUsed(getKeepAlive(request)); SearchContext context = createContext(readerContext, request, task, ResultsType.DFS, false) ) { - DfsPhase.execute(context); + final long beforeQueryTime = System.nanoTime(); + var opsListener = context.indexShard().getSearchOperationListener(); + opsListener.onPreDfsPhase(context); + try { + DfsPhase.execute(context); + opsListener.onDfsPhase(context, System.nanoTime() - beforeQueryTime); + opsListener = null; + } finally { + if (opsListener != null) { + opsListener.onFailedDfsPhase(context); + } + } return context.dfsResult(); } catch (Exception e) { logger.trace("Dfs phase failed", e); diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java index cf9d3bc811664..47ffc50970f43 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java @@ -613,6 +613,10 @@ private static CommonStats createShardLevelCommonStats() { ++iota, ++iota, ++iota, + ++iota, + ++iota, + ++iota, + ++iota, ++iota ); Map groupStats = new HashMap<>(); diff --git a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java index a4430e1c1499d..f4e23dce6896f 100644 --- a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java @@ -22,9 +22,9 @@ public void testShardLevelSearchGroupStats() throws Exception { // let's create two dummy search stats with groups Map groupStats1 = new HashMap<>(); Map groupStats2 = new HashMap<>(); - groupStats2.put("group1", new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); - SearchStats searchStats1 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); - SearchStats searchStats2 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); + groupStats2.put("group1", new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + SearchStats searchStats1 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); + SearchStats searchStats2 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); // adding these two search stats and checking group stats are correct searchStats1.add(searchStats2); @@ -43,6 +43,9 @@ public void testShardLevelSearchGroupStats() throws Exception { } private static void assertStats(Stats stats, long equalTo) { + assertEquals(equalTo, stats.getDfsCount()); + assertEquals(equalTo, stats.getDfsTimeInMillis()); + assertEquals(equalTo, stats.getDfsCurrent()); assertEquals(equalTo, stats.getQueryCount()); assertEquals(equalTo, stats.getQueryTimeInMillis()); assertEquals(equalTo, stats.getQueryCurrent()); From 4d7e8b20bd0b5ae1fda6870de880bb3b6bdb2a78 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Thu, 3 Apr 2025 16:57:55 +0300 Subject: [PATCH 02/13] Add missing code --- .../java/org/elasticsearch/search/stats/SearchStatsIT.java | 2 ++ .../java/org/elasticsearch/index/search/stats/SearchStats.java | 1 + 2 files changed, 3 insertions(+) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java index 821d7f0454fe9..39561300bb793 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java @@ -140,6 +140,8 @@ public void testSimpleStats() throws Exception { indicesStats = indicesAdmin().prepareStats().setGroups("group1").get(); assertThat(indicesStats.getTotal().getSearch().getGroupStats(), notNullValue()); + assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getDfsCount(), equalTo(0L)); + assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getQueryTimeInMillis(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getFetchCount(), greaterThan(0L)); diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index 985fe7ed2b73e..1604e53a7f20f 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -124,6 +124,7 @@ private Stats(StreamInput in) throws IOException { suggestCurrent = in.readVLong(); if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { + dfsFailure = in.readVLong(); queryFailure = in.readVLong(); fetchFailure = in.readVLong(); } From f7d62f1f16effd51c267d59a5067350efb282f0d Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Fri, 4 Apr 2025 17:27:45 +0300 Subject: [PATCH 03/13] Add testing --- .../indices/stats/IndexStatsIT.java | 2 + .../shard/SearchOperationListenerTests.java | 104 ++++++++++++ .../search/SearchServiceSingleNodeTests.java | 2 + .../search/stats/ShardSearchStatsTests.java | 159 ++++++++++++++++++ 4 files changed, 267 insertions(+) create mode 100644 server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java diff --git a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java index 31dd14a37b9a1..42143be1af79a 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java @@ -567,10 +567,12 @@ public void testSimpleStats() throws Exception { // make sure that number of requests in progress is 0 assertThat(stats.getIndex("test1").getTotal().getIndexing().getTotal().getIndexCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getIndexing().getTotal().getDeleteCurrent(), equalTo(0L)); + assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getDfsCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getFetchCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getQueryCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getIndexing().getTotal().getIndexCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getIndexing().getTotal().getDeleteCurrent(), equalTo(0L)); + assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getDfsCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getFetchCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getQueryCurrent(), equalTo(0L)); diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index cf8053538ec2b..d56bc1c8e0f8c 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -31,6 +31,9 @@ public class SearchOperationListenerTests extends ESTestCase { // this test also tests if calls are correct if one or more listeners throw exceptions public void testListenersAreExecuted() { + AtomicInteger onDfs = new AtomicInteger(); + AtomicInteger preDfs = new AtomicInteger(); + AtomicInteger failedDfs = new AtomicInteger(); AtomicInteger preQuery = new AtomicInteger(); AtomicInteger failedQuery = new AtomicInteger(); AtomicInteger onQuery = new AtomicInteger(); @@ -44,6 +47,25 @@ public void testListenersAreExecuted() { AtomicInteger validateSearchContext = new AtomicInteger(); AtomicInteger timeInNanos = new AtomicInteger(randomIntBetween(0, 10)); SearchOperationListener listener = new SearchOperationListener() { + @Override + public void onPreDfsPhase(SearchContext searchContext) { + assertNotNull(searchContext); + preDfs.incrementAndGet(); + } + + @Override + public void onFailedDfsPhase(SearchContext searchContext) { + assertNotNull(searchContext); + failedDfs.incrementAndGet(); + } + + @Override + public void onDfsPhase(SearchContext searchContext, long tookInNanos) { + assertEquals(timeInNanos.get(), tookInNanos); + assertNotNull(searchContext); + onDfs.incrementAndGet(); + } + @Override public void onPreQueryPhase(SearchContext searchContext) { assertNotNull(searchContext); @@ -139,11 +161,31 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest logger ); try (SearchContext ctx = new TestSearchContext((SearchExecutionContext) null)) { + compositeListener.onDfsPhase(ctx, timeInNanos.get()); + assertEquals(0, preDfs.get()); + assertEquals(0, preFetch.get()); + assertEquals(0, preQuery.get()); + assertEquals(0, failedDfs.get()); + assertEquals(0, failedFetch.get()); + assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); + assertEquals(0, onQuery.get()); + assertEquals(0, onFetch.get()); + assertEquals(0, newContext.get()); + assertEquals(0, newScrollContext.get()); + assertEquals(0, freeContext.get()); + assertEquals(0, freeScrollContext.get()); + assertEquals(0, validateSearchContext.get()); + + compositeListener.onQueryPhase(ctx, timeInNanos.get()); + assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); + assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(0, onFetch.get()); assertEquals(0, newContext.get()); @@ -153,10 +195,29 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFetchPhase(ctx, timeInNanos.get()); + assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); + assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); + assertEquals(2, onQuery.get()); + assertEquals(2, onFetch.get()); + assertEquals(0, newContext.get()); + assertEquals(0, newScrollContext.get()); + assertEquals(0, freeContext.get()); + assertEquals(0, freeScrollContext.get()); + assertEquals(0, validateSearchContext.get()); + + compositeListener.onPreDfsPhase(ctx); + assertEquals(2, preDfs.get()); + assertEquals(0, preFetch.get()); + assertEquals(0, preQuery.get()); + assertEquals(0, failedDfs.get()); + assertEquals(0, failedFetch.get()); + assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -166,10 +227,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreQueryPhase(ctx); + assertEquals(2, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -179,10 +243,29 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreFetchPhase(ctx); + assertEquals(2, preDfs.get()); + assertEquals(2, preFetch.get()); + assertEquals(2, preQuery.get()); + assertEquals(0, failedDfs.get()); + assertEquals(0, failedFetch.get()); + assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); + assertEquals(2, onQuery.get()); + assertEquals(2, onFetch.get()); + assertEquals(0, newContext.get()); + assertEquals(0, newScrollContext.get()); + assertEquals(0, freeContext.get()); + assertEquals(0, freeScrollContext.get()); + assertEquals(0, validateSearchContext.get()); + + compositeListener.onFailedDfsPhase(ctx); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -192,10 +275,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFailedFetchPhase(ctx); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(0, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -205,10 +291,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFailedQueryPhase(ctx); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -218,10 +307,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onNewReaderContext(mock(ReaderContext.class)); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -231,10 +323,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onNewScrollContext(mock(ReaderContext.class)); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -244,10 +339,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFreeReaderContext(mock(ReaderContext.class)); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -257,10 +355,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFreeScrollContext(mock(ReaderContext.class)); + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -282,10 +383,13 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertThat(expected.getSuppressed()[0], not(sameInstance(expected))); } } + assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); + assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); + assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); diff --git a/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java b/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java index 66b9e69aea906..efe93feee69af 100644 --- a/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java +++ b/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java @@ -443,6 +443,7 @@ public void testSearchWhileIndexDeleted() throws InterruptedException { assertEquals(0, service.getActiveContexts()); SearchStats.Stats totalStats = indexShard.searchStats().getTotal(); + assertEquals(0, totalStats.getDfsCurrent()); assertEquals(0, totalStats.getQueryCurrent()); assertEquals(0, totalStats.getScrollCurrent()); assertEquals(0, totalStats.getFetchCurrent()); @@ -1223,6 +1224,7 @@ public void testSearchWhileIndexDeletedDoesNotLeakSearchContext() throws Executi assertEquals(0, service.getActiveContexts()); SearchStats.Stats totalStats = indexShard.searchStats().getTotal(); + assertEquals(0, totalStats.getDfsCurrent()); assertEquals(0, totalStats.getQueryCurrent()); assertEquals(0, totalStats.getScrollCurrent()); assertEquals(0, totalStats.getFetchCurrent()); diff --git a/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java new file mode 100644 index 0000000000000..91279557939c3 --- /dev/null +++ b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.search.stats; + +import org.elasticsearch.index.search.stats.SearchStats; +import org.elasticsearch.index.search.stats.ShardSearchStats; +import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.elasticsearch.search.internal.SearchContext; +import org.elasticsearch.search.internal.ShardSearchRequest; +import org.elasticsearch.search.suggest.SuggestBuilder; +import org.elasticsearch.test.ESTestCase; + +import java.util.concurrent.TimeUnit; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class ShardSearchStatsTests extends ESTestCase { + + private static final long TEN_MILLIS = 10; + + public void testDfsPhase() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(null); + + listener.onPreDfsPhase(sc); + listener.onDfsPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getDfsCurrent()); + assertEquals(1, stats.getTotal().getDfsCount()); + assertEquals(TEN_MILLIS, stats.getTotal().getDfsTimeInMillis()); + } + + public void testDfsPhase_Failure() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(null); + + listener.onPreDfsPhase(sc); + listener.onFailedDfsPhase(sc); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getDfsCurrent()); + assertEquals(0, stats.getTotal().getDfsCount()); + assertEquals(1, stats.getTotal().getDfsFailure()); + } + + public void testQueryPhase_SuggestOnly() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + SearchSourceBuilder ssb = new SearchSourceBuilder().suggest(new SuggestBuilder()); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + when(req.source()).thenReturn(ssb); + + listener.onPreQueryPhase(sc); + listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getSuggestCurrent()); + assertEquals(1, stats.getTotal().getSuggestCount()); + assertEquals(TEN_MILLIS, stats.getTotal().getSuggestTimeInMillis()); + assertEquals(0, stats.getTotal().getQueryCurrent()); + assertEquals(0, stats.getTotal().getQueryCount()); + assertEquals(0, stats.getTotal().getQueryTimeInMillis()); + } + + public void testQueryPhase() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + + listener.onPreQueryPhase(sc); + listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getQueryCurrent()); + assertEquals(1, stats.getTotal().getQueryCount()); + assertEquals(TEN_MILLIS, stats.getTotal().getQueryTimeInMillis()); + } + + public void testQueryPhase_SuggestOnly_Failure() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + SearchSourceBuilder ssb = new SearchSourceBuilder().suggest(new SuggestBuilder()); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + when(req.source()).thenReturn(ssb); + + listener.onPreQueryPhase(sc); + listener.onFailedQueryPhase(sc); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getSuggestCurrent()); + assertEquals(0, stats.getTotal().getSuggestCount()); + assertEquals(0, stats.getTotal().getQueryCurrent()); + assertEquals(0, stats.getTotal().getQueryCount()); + assertEquals(0, stats.getTotal().getQueryFailure()); + } + + public void testQueryPhase_Failure() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + + listener.onPreQueryPhase(sc); + listener.onFailedQueryPhase(sc); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getQueryCurrent()); + assertEquals(0, stats.getTotal().getQueryCount()); + assertEquals(1, stats.getTotal().getQueryFailure()); + } + + public void testFetchPhase() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + + listener.onPreFetchPhase(sc); + listener.onFetchPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getFetchCurrent()); + assertEquals(1, stats.getTotal().getFetchCount()); + assertEquals(TEN_MILLIS, stats.getTotal().getFetchTimeInMillis()); + } + + public void testFetchPhase_Failure() { + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(null); + + listener.onPreFetchPhase(sc); + listener.onFailedFetchPhase(sc); + + SearchStats stats = listener.stats(); + assertEquals(0, stats.getTotal().getFetchCurrent()); + assertEquals(0, stats.getTotal().getFetchCount()); + assertEquals(1, stats.getTotal().getFetchFailure()); + } +} From 463e995f627afb159af15f438ff2fdbe29a4dd84 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Apr 2025 09:58:32 +0300 Subject: [PATCH 04/13] Add tests --- .../search/stats/ShardSearchStatsTests.java | 208 +++++++++++++++--- 1 file changed, 172 insertions(+), 36 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java index 91279557939c3..c3629cd8a65f8 100644 --- a/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java @@ -12,11 +12,14 @@ import org.elasticsearch.index.search.stats.SearchStats; import org.elasticsearch.index.search.stats.ShardSearchStats; import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.elasticsearch.search.internal.ReaderContext; import org.elasticsearch.search.internal.SearchContext; import org.elasticsearch.search.internal.ShardSearchRequest; import org.elasticsearch.search.suggest.SuggestBuilder; import org.elasticsearch.test.ESTestCase; +import java.util.Arrays; +import java.util.Objects; import java.util.concurrent.TimeUnit; import static org.mockito.Mockito.mock; @@ -34,10 +37,32 @@ public void testDfsPhase() { listener.onPreDfsPhase(sc); listener.onDfsPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getDfsCurrent()); - assertEquals(1, stats.getTotal().getDfsCount()); - assertEquals(TEN_MILLIS, stats.getTotal().getDfsTimeInMillis()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getDfsCurrent()); + assertEquals(1, stats.getDfsCount()); + assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); + } + + public void testDfsPhase_withGroups() { + String[] groups = new String[] { "group1" }; + + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(Arrays.asList(groups)); + + listener.onPreDfsPhase(sc); + listener.onDfsPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats searchStats = listener.stats(groups); + SearchStats.Stats stats = searchStats.getTotal(); + assertEquals(0, stats.getDfsCurrent()); + assertEquals(1, stats.getDfsCount()); + assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); + + stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1"); + assertEquals(0, stats.getDfsCurrent()); + assertEquals(1, stats.getDfsCount()); + assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); } public void testDfsPhase_Failure() { @@ -48,10 +73,10 @@ public void testDfsPhase_Failure() { listener.onPreDfsPhase(sc); listener.onFailedDfsPhase(sc); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getDfsCurrent()); - assertEquals(0, stats.getTotal().getDfsCount()); - assertEquals(1, stats.getTotal().getDfsFailure()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getDfsCurrent()); + assertEquals(0, stats.getDfsCount()); + assertEquals(1, stats.getDfsFailure()); } public void testQueryPhase_SuggestOnly() { @@ -66,13 +91,13 @@ public void testQueryPhase_SuggestOnly() { listener.onPreQueryPhase(sc); listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getSuggestCurrent()); - assertEquals(1, stats.getTotal().getSuggestCount()); - assertEquals(TEN_MILLIS, stats.getTotal().getSuggestTimeInMillis()); - assertEquals(0, stats.getTotal().getQueryCurrent()); - assertEquals(0, stats.getTotal().getQueryCount()); - assertEquals(0, stats.getTotal().getQueryTimeInMillis()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getSuggestCurrent()); + assertEquals(1, stats.getSuggestCount()); + assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis()); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(0, stats.getQueryCount()); + assertEquals(0, stats.getQueryTimeInMillis()); } public void testQueryPhase() { @@ -85,10 +110,67 @@ public void testQueryPhase() { listener.onPreQueryPhase(sc); listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getQueryCurrent()); - assertEquals(1, stats.getTotal().getQueryCount()); - assertEquals(TEN_MILLIS, stats.getTotal().getQueryTimeInMillis()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(1, stats.getQueryCount()); + assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis()); + } + + public void testQueryPhase_withGroups() { + String[] groups = new String[] { "group1" }; + + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(Arrays.asList(groups)); + + listener.onPreQueryPhase(sc); + listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats searchStats = listener.stats("_all"); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(1, stats.getQueryCount()); + assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis()); + + stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1"); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(1, stats.getQueryCount()); + assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis()); + } + + public void testQueryPhase_withGroups_SuggestOnly() { + String[] groups = new String[] { "group1" }; + + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + ShardSearchRequest req = mock(ShardSearchRequest.class); + SearchSourceBuilder ssb = new SearchSourceBuilder().suggest(new SuggestBuilder()); + when(sc.request()).thenReturn(req); + when(sc.groupStats()).thenReturn(null); + when(req.source()).thenReturn(ssb); + when(sc.groupStats()).thenReturn(Arrays.asList(groups)); + + listener.onPreQueryPhase(sc); + listener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats searchStats = listener.stats("_all"); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getSuggestCurrent()); + assertEquals(1, stats.getSuggestCount()); + assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis()); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(0, stats.getQueryCount()); + assertEquals(0, stats.getQueryTimeInMillis()); + + stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1"); + assertEquals(0, stats.getSuggestCurrent()); + assertEquals(1, stats.getSuggestCount()); + assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis()); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(0, stats.getQueryCount()); + assertEquals(0, stats.getQueryTimeInMillis()); } public void testQueryPhase_SuggestOnly_Failure() { @@ -103,12 +185,12 @@ public void testQueryPhase_SuggestOnly_Failure() { listener.onPreQueryPhase(sc); listener.onFailedQueryPhase(sc); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getSuggestCurrent()); - assertEquals(0, stats.getTotal().getSuggestCount()); - assertEquals(0, stats.getTotal().getQueryCurrent()); - assertEquals(0, stats.getTotal().getQueryCount()); - assertEquals(0, stats.getTotal().getQueryFailure()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getSuggestCurrent()); + assertEquals(0, stats.getSuggestCount()); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(0, stats.getQueryCount()); + assertEquals(0, stats.getQueryFailure()); } public void testQueryPhase_Failure() { @@ -121,10 +203,10 @@ public void testQueryPhase_Failure() { listener.onPreQueryPhase(sc); listener.onFailedQueryPhase(sc); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getQueryCurrent()); - assertEquals(0, stats.getTotal().getQueryCount()); - assertEquals(1, stats.getTotal().getQueryFailure()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getQueryCurrent()); + assertEquals(0, stats.getQueryCount()); + assertEquals(1, stats.getQueryFailure()); } public void testFetchPhase() { @@ -137,10 +219,32 @@ public void testFetchPhase() { listener.onPreFetchPhase(sc); listener.onFetchPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); - SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getFetchCurrent()); - assertEquals(1, stats.getTotal().getFetchCount()); - assertEquals(TEN_MILLIS, stats.getTotal().getFetchTimeInMillis()); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getFetchCurrent()); + assertEquals(1, stats.getFetchCount()); + assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis()); + } + + public void testFetchPhase_withGroups() { + String[] groups = new String[] { "group1" }; + + ShardSearchStats listener = new ShardSearchStats(); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(Arrays.asList(groups)); + + listener.onPreFetchPhase(sc); + listener.onFetchPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); + + SearchStats searchStats = listener.stats("_all"); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getFetchCurrent()); + assertEquals(1, stats.getFetchCount()); + assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis()); + + stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1"); + assertEquals(0, stats.getFetchCurrent()); + assertEquals(1, stats.getFetchCount()); + assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis()); } public void testFetchPhase_Failure() { @@ -151,9 +255,41 @@ public void testFetchPhase_Failure() { listener.onPreFetchPhase(sc); listener.onFailedFetchPhase(sc); + SearchStats.Stats stats = listener.stats().getTotal(); + assertEquals(0, stats.getFetchCurrent()); + assertEquals(0, stats.getFetchCount()); + assertEquals(1, stats.getFetchFailure()); + } + + public void testReaderContext() { + ShardSearchStats listener = new ShardSearchStats(); + ReaderContext rc = mock(ReaderContext.class); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(null); + + listener.onNewReaderContext(rc); SearchStats stats = listener.stats(); - assertEquals(0, stats.getTotal().getFetchCurrent()); - assertEquals(0, stats.getTotal().getFetchCount()); - assertEquals(1, stats.getTotal().getFetchFailure()); + assertEquals(1, stats.getOpenContexts()); + + listener.onFreeReaderContext(rc); + stats = listener.stats(); + assertEquals(0, stats.getOpenContexts()); + } + + public void testScrollContext() { + ShardSearchStats listener = new ShardSearchStats(); + ReaderContext rc = mock(ReaderContext.class); + SearchContext sc = mock(SearchContext.class); + when(sc.groupStats()).thenReturn(null); + + listener.onNewScrollContext(rc); + SearchStats stats = listener.stats(); + assertEquals(1, stats.getTotal().getScrollCurrent()); + + listener.onFreeScrollContext(rc); + stats = listener.stats(); + assertEquals(0, stats.getTotal().getScrollCurrent()); + assertEquals(1, stats.getTotal().getScrollCount()); + assertTrue(stats.getTotal().getScrollTimeInMillis() > 0); } } From 86254f934480dafd3d374785cec0b24d34c50712 Mon Sep 17 00:00:00 2001 From: elasticsearchmachine Date: Mon, 7 Apr 2025 07:10:04 +0000 Subject: [PATCH 05/13] [CI] Auto commit changes from spotless --- .../org/elasticsearch/monitor/metrics/IndicesMetricsIT.java | 1 - .../java/org/elasticsearch/search/stats/SearchStatsIT.java | 2 +- .../elasticsearch/index/search/stats/ShardSearchStats.java | 6 +++--- .../elasticsearch/index/shard/SearchOperationListener.java | 2 +- .../elasticsearch/index/search/stats/SearchStatsTests.java | 6 +++--- .../index/shard/SearchOperationListenerTests.java | 1 - 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java index 489158f636918..26237cebc9215 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java @@ -273,7 +273,6 @@ public void testIndicesMetrics() { ) ); - client(searchNode).prepareSearch("time*").setPreference(preference).setSize(100).get().decRef(); var search2 = indicesService.stats(CommonStatsFlags.ALL, false).getSearch().getTotal(); collectThenAssertMetrics( diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java index 39561300bb793..c67184a0d6e81 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java @@ -130,7 +130,7 @@ public void testSimpleStats() throws Exception { IndicesStatsResponse indicesStats = indicesAdmin().prepareStats().get(); logger.debug("###### indices search stats: {}", indicesStats.getTotal().getSearch()); - assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(),equalTo(0L)); + assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryTimeInMillis(), greaterThan(0L)); diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java index dc73c979fdc2c..cd315560f7344 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java @@ -107,13 +107,13 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) { }); } - @Override - public void onPreDfsPhase(SearchContext searchContext) { + @Override + public void onPreDfsPhase(SearchContext searchContext) { computeStats(searchContext, statsHolder -> statsHolder.dfsCurrent.inc()); } @Override - public void onDfsPhase(SearchContext searchContext, long tookInNanos) { + public void onDfsPhase(SearchContext searchContext, long tookInNanos) { computeStats(searchContext, statsHolder -> { statsHolder.dfsMetric.inc(tookInNanos); statsHolder.dfsCurrent.dec(); diff --git a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java index 0dbc51f35faec..9dc84090a610f 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java +++ b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java @@ -79,7 +79,7 @@ default void onPreDfsPhase(SearchContext searchContext) {} * * @see #onFailedQueryPhase(SearchContext) */ - default void onDfsPhase(SearchContext searchContext, long tookInNanos) {} + default void onDfsPhase(SearchContext searchContext, long tookInNanos) {} /** * Executed if a dfs phased failed. diff --git a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java index f4e23dce6896f..c45adc8ffea6d 100644 --- a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java @@ -22,9 +22,9 @@ public void testShardLevelSearchGroupStats() throws Exception { // let's create two dummy search stats with groups Map groupStats1 = new HashMap<>(); Map groupStats2 = new HashMap<>(); - groupStats2.put("group1", new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); - SearchStats searchStats1 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); - SearchStats searchStats2 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); + groupStats2.put("group1", new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + SearchStats searchStats1 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); + SearchStats searchStats2 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); // adding these two search stats and checking group stats are correct searchStats1.add(searchStats2); diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index d56bc1c8e0f8c..e2094d8fc841f 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -177,7 +177,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, freeScrollContext.get()); assertEquals(0, validateSearchContext.get()); - compositeListener.onQueryPhase(ctx, timeInNanos.get()); assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); From 8cb0de305acd894ca8337fa979789b8e0d92b842 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Apr 2025 10:25:49 +0300 Subject: [PATCH 06/13] update spot --- .../monitor/metrics/IndicesMetricsIT.java | 1 - .../search/stats/SearchStatsIT.java | 2 +- .../index/search/stats/ShardSearchStats.java | 6 +++--- .../index/shard/SearchOperationListener.java | 2 +- .../index/search/stats/SearchStatsTests.java | 6 +++--- .../shard/SearchOperationListenerTests.java | 1 - .../indices/IndexStatsMonitoringDocTests.java | 21 ++++++++++++++++++- .../IndicesStatsMonitoringDocTests.java | 2 +- .../node/NodeStatsMonitoringDocTests.java | 21 ++++++++++++++++++- 9 files changed, 49 insertions(+), 13 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java index 489158f636918..26237cebc9215 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java @@ -273,7 +273,6 @@ public void testIndicesMetrics() { ) ); - client(searchNode).prepareSearch("time*").setPreference(preference).setSize(100).get().decRef(); var search2 = indicesService.stats(CommonStatsFlags.ALL, false).getSearch().getTotal(); collectThenAssertMetrics( diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java index 39561300bb793..c67184a0d6e81 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java @@ -130,7 +130,7 @@ public void testSimpleStats() throws Exception { IndicesStatsResponse indicesStats = indicesAdmin().prepareStats().get(); logger.debug("###### indices search stats: {}", indicesStats.getTotal().getSearch()); - assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(),equalTo(0L)); + assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryTimeInMillis(), greaterThan(0L)); diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java index dc73c979fdc2c..cd315560f7344 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java @@ -107,13 +107,13 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) { }); } - @Override - public void onPreDfsPhase(SearchContext searchContext) { + @Override + public void onPreDfsPhase(SearchContext searchContext) { computeStats(searchContext, statsHolder -> statsHolder.dfsCurrent.inc()); } @Override - public void onDfsPhase(SearchContext searchContext, long tookInNanos) { + public void onDfsPhase(SearchContext searchContext, long tookInNanos) { computeStats(searchContext, statsHolder -> { statsHolder.dfsMetric.inc(tookInNanos); statsHolder.dfsCurrent.dec(); diff --git a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java index 0dbc51f35faec..9dc84090a610f 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java +++ b/server/src/main/java/org/elasticsearch/index/shard/SearchOperationListener.java @@ -79,7 +79,7 @@ default void onPreDfsPhase(SearchContext searchContext) {} * * @see #onFailedQueryPhase(SearchContext) */ - default void onDfsPhase(SearchContext searchContext, long tookInNanos) {} + default void onDfsPhase(SearchContext searchContext, long tookInNanos) {} /** * Executed if a dfs phased failed. diff --git a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java index f4e23dce6896f..c45adc8ffea6d 100644 --- a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java @@ -22,9 +22,9 @@ public void testShardLevelSearchGroupStats() throws Exception { // let's create two dummy search stats with groups Map groupStats1 = new HashMap<>(); Map groupStats2 = new HashMap<>(); - groupStats2.put("group1", new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); - SearchStats searchStats1 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); - SearchStats searchStats2 = new SearchStats(new Stats(1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); + groupStats2.put("group1", new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + SearchStats searchStats1 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats1); + SearchStats searchStats2 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 0, groupStats2); // adding these two search stats and checking group stats are correct searchStats1.add(searchStats2); diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index d56bc1c8e0f8c..e2094d8fc841f 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -177,7 +177,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, freeScrollContext.get()); assertEquals(0, validateSearchContext.get()); - compositeListener.onQueryPhase(ctx, timeInNanos.get()); assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java index 185539e6036c7..df79a36636792 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java @@ -408,7 +408,26 @@ private static CommonStats mockCommonStats() { ); commonStats.getIndexing().add(new IndexingStats(indexingStats)); - final SearchStats.Stats searchStats = new SearchStats.Stats(++iota, ++iota, no, no, no, no, no, no, no, no, no, no, no, no); + final SearchStats.Stats searchStats = new SearchStats.Stats( + no, + no, + no, + no, + ++iota, + ++iota, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no + ); commonStats.getSearch().add(new SearchStats(searchStats, no, null)); final SegmentsStats segmentsStats = new SegmentsStats(); diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java index 3d590bbcf674f..4d261b5242447 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java @@ -186,7 +186,7 @@ private CommonStats mockCommonStats() { final IndexingStats.Stats indexingStats = new IndexingStats.Stats(3L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, true, 5L, 0, 0, 0.0, 0.0); commonStats.getIndexing().add(new IndexingStats(indexingStats)); - final SearchStats.Stats searchStats = new SearchStats.Stats(6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L); + final SearchStats.Stats searchStats = new SearchStats.Stats(0L, 0L, 0L, 0L, 6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L); commonStats.getSearch().add(new SearchStats(searchStats, 0L, null)); final BulkStats bulkStats = new BulkStats(0L, 0L, 0L, 0L, 0L); diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java index d7071aa8d0017..9bf2753db30d4 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java @@ -356,7 +356,26 @@ private static NodeStats mockNodeStats() { indicesCommonStats.getQueryCache().add(new QueryCacheStats(++iota, ++iota, ++iota, ++iota, no)); indicesCommonStats.getRequestCache().add(new RequestCacheStats(++iota, ++iota, ++iota, ++iota)); - final SearchStats.Stats searchStats = new SearchStats.Stats(++iota, ++iota, no, no, no, no, no, no, no, no, no, no, no, no); + final SearchStats.Stats searchStats = new SearchStats.Stats( + no, + no, + no, + no, + ++iota, + ++iota, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no, + no + ); indicesCommonStats.getSearch().add(new SearchStats(searchStats, no, null)); final SegmentsStats segmentsStats = new SegmentsStats(); From 667e62739e216360e3c72f2563529f2949467bbc Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Apr 2025 18:12:49 +0300 Subject: [PATCH 07/13] Add version for bwc --- .../org/elasticsearch/TransportVersions.java | 1 + .../index/search/stats/SearchStats.java | 26 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 00943d04275dd..283f82b4690b2 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -214,6 +214,7 @@ static TransportVersion def(int id) { public static final TransportVersion ESQL_REMOVE_AGGREGATE_TYPE = def(9_045_0_00); public static final TransportVersion ADD_PROJECT_ID_TO_DSL_ERROR_INFO = def(9_046_0_00); public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_047_00_0); + public static final TransportVersion DFS_STATS = def(9_048_00_0); /* * STOP! READ THIS FIRST! No, really, diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index 1604e53a7f20f..0be07ea5b9e1b 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -103,9 +103,11 @@ public Stats( } private Stats(StreamInput in) throws IOException { - dfsCount = in.readVLong(); - dfsTimeInMillis = in.readVLong(); - dfsCurrent = in.readVLong(); + if (in.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { + dfsCount = in.readVLong(); + dfsTimeInMillis = in.readVLong(); + dfsCurrent = in.readVLong(); + } queryCount = in.readVLong(); queryTimeInMillis = in.readVLong(); @@ -124,17 +126,22 @@ private Stats(StreamInput in) throws IOException { suggestCurrent = in.readVLong(); if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - dfsFailure = in.readVLong(); queryFailure = in.readVLong(); fetchFailure = in.readVLong(); } + + if (in.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { + dfsFailure = in.readVLong(); + } } @Override public void writeTo(StreamOutput out) throws IOException { - out.writeVLong(dfsCount); - out.writeVLong(dfsTimeInMillis); - out.writeVLong(dfsCurrent); + if (out.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { + out.writeVLong(dfsCount); + out.writeVLong(dfsTimeInMillis); + out.writeVLong(dfsCurrent); + } out.writeVLong(queryCount); out.writeVLong(queryTimeInMillis); @@ -153,10 +160,13 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(suggestCurrent); if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeVLong(dfsFailure); out.writeVLong(queryFailure); out.writeVLong(fetchFailure); } + + if (out.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { + out.writeVLong(dfsFailure); + } } public void add(Stats stats) { From 3ca903a880cbbef87c9248cbf1e02edb83fbeefe Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Tue, 8 Apr 2025 17:10:05 +0300 Subject: [PATCH 08/13] Update after review --- .../elasticsearch/index/search/stats/SearchStats.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index 0be07ea5b9e1b..6154be66cb8af 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -107,6 +107,7 @@ private Stats(StreamInput in) throws IOException { dfsCount = in.readVLong(); dfsTimeInMillis = in.readVLong(); dfsCurrent = in.readVLong(); + dfsFailure = in.readVLong(); } queryCount = in.readVLong(); @@ -129,10 +130,6 @@ private Stats(StreamInput in) throws IOException { queryFailure = in.readVLong(); fetchFailure = in.readVLong(); } - - if (in.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { - dfsFailure = in.readVLong(); - } } @Override @@ -141,6 +138,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(dfsCount); out.writeVLong(dfsTimeInMillis); out.writeVLong(dfsCurrent); + out.writeVLong(dfsFailure); } out.writeVLong(queryCount); @@ -163,10 +161,6 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(queryFailure); out.writeVLong(fetchFailure); } - - if (out.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { - out.writeVLong(dfsFailure); - } } public void add(Stats stats) { From e1c095d00e1d918b34f7bf2697234b8a9e5dd9a6 Mon Sep 17 00:00:00 2001 From: elasticsearchmachine Date: Mon, 30 Jun 2025 08:15:56 +0000 Subject: [PATCH 09/13] [CI] Auto commit changes from spotless --- .../IndicesStatsMonitoringDocTests.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java index 97e11dadd5c1f..9ad23b2f5ade6 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java @@ -186,7 +186,27 @@ private CommonStats mockCommonStats() { final IndexingStats.Stats indexingStats = new IndexingStats.Stats(3L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, true, 5L, 0, 0, 0, 0.0, 0.0); commonStats.getIndexing().add(new IndexingStats(indexingStats)); - final SearchStats.Stats searchStats = new SearchStats.Stats(0L, 0L, 0L, 0L, 6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0.0); + final SearchStats.Stats searchStats = new SearchStats.Stats( + 0L, + 0L, + 0L, + 0L, + 6L, + 7L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0L, + 0.0 + ); commonStats.getSearch().add(new SearchStats(searchStats, 0L, null)); From 14dfcccb60b0cd3529b796ffe5ac0b1a79b4b6e0 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Jul 2025 10:07:36 +0300 Subject: [PATCH 10/13] update after reviw - revert code --- .../indices/stats/IndexStatsIT.java | 2 - .../monitor/metrics/IndicesMetricsIT.java | 9 --- .../search/stats/SearchStatsIT.java | 4 -- .../org/elasticsearch/TransportVersions.java | 1 - .../index/search/stats/SearchStats.java | 72 +------------------ .../index/search/stats/ShardSearchStats.java | 26 +------ .../monitor/metrics/IndicesMetrics.java | 26 +------ .../cluster/node/stats/NodeStatsTests.java | 4 -- .../index/search/stats/SearchStatsTests.java | 6 +- .../search/SearchServiceSingleNodeTests.java | 2 - .../search/stats/ShardSearchStatsTests.java | 12 ---- .../indices/IndexStatsMonitoringDocTests.java | 4 -- .../IndicesStatsMonitoringDocTests.java | 22 +----- .../node/NodeStatsMonitoringDocTests.java | 4 -- 14 files changed, 7 insertions(+), 187 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java index 42143be1af79a..31dd14a37b9a1 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java @@ -567,12 +567,10 @@ public void testSimpleStats() throws Exception { // make sure that number of requests in progress is 0 assertThat(stats.getIndex("test1").getTotal().getIndexing().getTotal().getIndexCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getIndexing().getTotal().getDeleteCurrent(), equalTo(0L)); - assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getDfsCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getFetchCurrent(), equalTo(0L)); assertThat(stats.getIndex("test1").getTotal().getSearch().getTotal().getQueryCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getIndexing().getTotal().getIndexCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getIndexing().getTotal().getDeleteCurrent(), equalTo(0L)); - assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getDfsCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getFetchCurrent(), equalTo(0L)); assertThat(stats.getIndex("test2").getTotal().getSearch().getTotal().getQueryCurrent(), equalTo(0L)); diff --git a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java index 26237cebc9215..fee2c0494365e 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java @@ -68,9 +68,6 @@ protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) { static final String STANDARD_INDEX_COUNT = "es.indices.standard.total"; static final String STANDARD_BYTES_SIZE = "es.indices.standard.size"; static final String STANDARD_DOCS_COUNT = "es.indices.standard.docs.total"; - static final String STANDARD_DFS_COUNT = "es.indices.standard.dfs.total"; - static final String STANDARD_DFS_TIME = "es.indices.standard.dfs.time"; - static final String STANDARD_DFS_FAILURE = "es.indices.standard.dfs.failure.total"; static final String STANDARD_QUERY_COUNT = "es.indices.standard.query.total"; static final String STANDARD_QUERY_TIME = "es.indices.standard.query.time"; static final String STANDARD_QUERY_FAILURE = "es.indices.standard.query.failure.total"; @@ -248,10 +245,6 @@ public void testIndicesMetrics() { telemetry, 1, Map.of( - STANDARD_DFS_COUNT, - equalTo(search1.getDfsCount()), - STANDARD_DFS_TIME, - equalTo(search1.getDfsTimeInMillis()), STANDARD_QUERY_COUNT, equalTo(numStandardIndices), STANDARD_QUERY_TIME, @@ -341,8 +334,6 @@ public void testIndicesMetrics() { telemetry, 4, Map.of( - STANDARD_DFS_FAILURE, - equalTo(0L), STANDARD_QUERY_FAILURE, equalTo(0L), STANDARD_FETCH_FAILURE, diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java index c67184a0d6e81..ee7f76e6be3f3 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java @@ -130,8 +130,6 @@ public void testSimpleStats() throws Exception { IndicesStatsResponse indicesStats = indicesAdmin().prepareStats().get(); logger.debug("###### indices search stats: {}", indicesStats.getTotal().getSearch()); - assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsCount(), equalTo(0L)); - assertThat(indicesStats.getTotal().getSearch().getTotal().getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getQueryTimeInMillis(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getTotal().getFetchCount(), greaterThan(0L)); @@ -140,8 +138,6 @@ public void testSimpleStats() throws Exception { indicesStats = indicesAdmin().prepareStats().setGroups("group1").get(); assertThat(indicesStats.getTotal().getSearch().getGroupStats(), notNullValue()); - assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getDfsCount(), equalTo(0L)); - assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getDfsTimeInMillis(), equalTo(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getQueryCount(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getQueryTimeInMillis(), greaterThan(0L)); assertThat(indicesStats.getTotal().getSearch().getGroupStats().get("group1").getFetchCount(), greaterThan(0L)); diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index d414702a5b239..431e2bf1a20eb 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -326,7 +326,6 @@ static TransportVersion def(int id) { public static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = def(9_110_0_00); public static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN = def(9_111_0_00); public static final TransportVersion MAPPINGS_IN_DATA_STREAMS = def(9_112_0_00); - public static final TransportVersion DFS_STATS = def(9_113_00_0); /* * STOP! READ THIS FIRST! No, really, diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index a3e1492b1295a..45c2ba9bd6679 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -30,10 +30,6 @@ public class SearchStats implements Writeable, ToXContentFragment { public static class Stats implements Writeable, ToXContentFragment { - private long dfsCount; - private long dfsTimeInMillis; - private long dfsCurrent; - private long queryCount; private long queryTimeInMillis; private long queryCurrent; @@ -50,7 +46,6 @@ public static class Stats implements Writeable, ToXContentFragment { private long suggestTimeInMillis; private long suggestCurrent; - private long dfsFailure; private long queryFailure; private long fetchFailure; @@ -63,10 +58,6 @@ private Stats() { } public Stats( - long dfsCount, - long dfsTimeInMillis, - long dfsCurrent, - long dfsFailure, long queryCount, long queryTimeInMillis, long queryCurrent, @@ -83,11 +74,6 @@ public Stats( long suggestCurrent, double recentSearchLoad ) { - this.dfsCount = dfsCount; - this.dfsTimeInMillis = dfsTimeInMillis; - this.dfsCurrent = dfsCurrent; - this.dfsFailure = dfsFailure; - this.queryCount = queryCount; this.queryTimeInMillis = queryTimeInMillis; this.queryCurrent = queryCurrent; @@ -111,13 +97,6 @@ public Stats( } private Stats(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { - dfsCount = in.readVLong(); - dfsTimeInMillis = in.readVLong(); - dfsCurrent = in.readVLong(); - dfsFailure = in.readVLong(); - } - queryCount = in.readVLong(); queryTimeInMillis = in.readVLong(); queryCurrent = in.readVLong(); @@ -146,13 +125,6 @@ private Stats(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.DFS_STATS)) { - out.writeVLong(dfsCount); - out.writeVLong(dfsTimeInMillis); - out.writeVLong(dfsCurrent); - out.writeVLong(dfsFailure); - } - out.writeVLong(queryCount); out.writeVLong(queryTimeInMillis); out.writeVLong(queryCurrent); @@ -180,11 +152,6 @@ public void writeTo(StreamOutput out) throws IOException { } public void add(Stats stats) { - dfsCount += stats.dfsCount; - dfsTimeInMillis += stats.dfsTimeInMillis; - dfsCurrent += stats.dfsCurrent; - dfsFailure += stats.dfsFailure; - queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; queryCurrent += stats.queryCurrent; @@ -207,10 +174,6 @@ public void add(Stats stats) { } public void addForClosingShard(Stats stats) { - dfsCount += stats.dfsCount; - dfsTimeInMillis += stats.dfsTimeInMillis; - dfsFailure += stats.dfsFailure; - queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; queryFailure += stats.queryFailure; @@ -230,26 +193,6 @@ public void addForClosingShard(Stats stats) { recentSearchLoad += stats.recentSearchLoad; } - public long getDfsCount() { - return dfsCount; - } - - public TimeValue getDfsTime() { - return new TimeValue(dfsTimeInMillis); - } - - public long getDfsTimeInMillis() { - return dfsTimeInMillis; - } - - public long getDfsCurrent() { - return dfsCurrent; - } - - public long getDfsFailure() { - return dfsFailure; - } - public long getQueryCount() { return queryCount; } @@ -332,11 +275,6 @@ public static Stats readStats(StreamInput in) throws IOException { @Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.field(Fields.DFS_TOTAL, dfsCount); - builder.humanReadableField(Fields.DFS_TIME_IN_MILLIS, Fields.DFS_TIME, getDfsTime()); - builder.field(Fields.DFS_CURRENT, dfsCurrent); - builder.field(Fields.DFS_FAILURE, dfsFailure); - builder.field(Fields.QUERY_TOTAL, queryCount); builder.humanReadableField(Fields.QUERY_TIME_IN_MILLIS, Fields.QUERY_TIME, getQueryTime()); builder.field(Fields.QUERY_CURRENT, queryCurrent); @@ -365,11 +303,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Stats that = (Stats) o; - return dfsCount == that.dfsCount - && dfsTimeInMillis == that.dfsTimeInMillis - && dfsCurrent == that.dfsCurrent - && dfsFailure == that.dfsFailure - && queryCount == that.queryCount + return queryCount == that.queryCount && queryTimeInMillis == that.queryTimeInMillis && queryCurrent == that.queryCurrent && queryFailure == that.queryFailure @@ -389,10 +323,6 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( - dfsCount, - dfsTimeInMillis, - dfsCurrent, - dfsFailure, queryCount, queryTimeInMillis, queryCurrent, diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java index 10d5fcca5bd59..2c2865a9025af 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/ShardSearchStats.java @@ -117,26 +117,9 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) { }); } - @Override - public void onPreDfsPhase(SearchContext searchContext) { - computeStats(searchContext, statsHolder -> statsHolder.dfsCurrent.inc()); - } - @Override public void onDfsPhase(SearchContext searchContext, long tookInNanos) { - computeStats(searchContext, statsHolder -> { - statsHolder.recentSearchLoad.addIncrement(tookInNanos, System.nanoTime()); - statsHolder.dfsMetric.inc(tookInNanos); - statsHolder.dfsCurrent.dec(); - }); - } - - @Override - public void onFailedDfsPhase(SearchContext searchContext) { - computeStats(searchContext, statsHolder -> { - statsHolder.dfsCurrent.dec(); - statsHolder.dfsFailure.inc(); - }); + computeStats(searchContext, statsHolder -> { statsHolder.recentSearchLoad.addIncrement(tookInNanos, System.nanoTime()); }); } private void computeStats(SearchContext searchContext, Consumer consumer) { @@ -186,7 +169,6 @@ public void onFreeScrollContext(ReaderContext readerContext) { } static final class StatsHolder { - final MeanMetric dfsMetric = new MeanMetric(); final MeanMetric queryMetric = new MeanMetric(); final MeanMetric fetchMetric = new MeanMetric(); /* We store scroll statistics in microseconds because with nanoseconds we run the risk of overflowing the total stats if there are @@ -198,13 +180,11 @@ static final class StatsHolder { */ final MeanMetric scrollMetric = new MeanMetric(); final MeanMetric suggestMetric = new MeanMetric(); - final CounterMetric dfsCurrent = new CounterMetric(); final CounterMetric queryCurrent = new CounterMetric(); final CounterMetric fetchCurrent = new CounterMetric(); final CounterMetric scrollCurrent = new CounterMetric(); final CounterMetric suggestCurrent = new CounterMetric(); - final CounterMetric dfsFailure = new CounterMetric(); final CounterMetric queryFailure = new CounterMetric(); final CounterMetric fetchFailure = new CounterMetric(); @@ -217,10 +197,6 @@ static final class StatsHolder { SearchStats.Stats stats() { return new SearchStats.Stats( - dfsMetric.count(), - TimeUnit.NANOSECONDS.toMillis(dfsMetric.sum()), - dfsCurrent.count(), - dfsFailure.count(), queryMetric.count(), TimeUnit.NANOSECONDS.toMillis(queryMetric.sum()), queryCurrent.count(), diff --git a/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java b/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java index df0451850287d..dfaf6535e4d85 100644 --- a/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java +++ b/server/src/main/java/org/elasticsearch/monitor/metrics/IndicesMetrics.java @@ -53,7 +53,7 @@ public IndicesMetrics(MeterRegistry meterRegistry, IndicesService indicesService } private static List registerAsyncMetrics(MeterRegistry registry, IndicesStatsCache cache) { - final int TOTAL_METRICS = 64; + final int TOTAL_METRICS = 52; List metrics = new ArrayList<>(TOTAL_METRICS); for (IndexMode indexMode : IndexMode.values()) { String name = indexMode.getName(); @@ -131,30 +131,6 @@ private static List registerAsyncMetrics(MeterRegistry registry, diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getFetchFailure()) ) ); - metrics.add( - registry.registerLongGauge( - "es.indices." + name + ".dfs.total", - "current fetches of " + name + " indices", - "unit", - diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsCount()) - ) - ); - metrics.add( - registry.registerLongGauge( - "es.indices." + name + ".dfs.time", - "current fetch time of " + name + " indices", - "ms", - diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsTimeInMillis()) - ) - ); - metrics.add( - registry.registerLongGauge( - "es.indices." + name + ".dfs.failure.total", - "current fetch failures of " + name + " indices", - "unit", - diffGauge(() -> cache.getOrRefresh().get(indexMode).search.getDfsFailure()) - ) - ); // indexing metrics.add( registry.registerLongGauge( diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java index 04a33f77ba58a..e8bbe412cbbab 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/stats/NodeStatsTests.java @@ -620,10 +620,6 @@ private static CommonStats createShardLevelCommonStats() { ++iota, ++iota, ++iota, - ++iota, - ++iota, - ++iota, - ++iota, ++iota ); Map groupStats = new HashMap<>(); diff --git a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java index 92e28cd99f8a0..9bd518ae50475 100644 --- a/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/index/search/stats/SearchStatsTests.java @@ -22,9 +22,9 @@ public void testShardLevelSearchGroupStats() throws Exception { // let's create two dummy search stats with groups Map groupStats1 = new HashMap<>(); Map groupStats2 = new HashMap<>(); - groupStats2.put("group1", new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0)); - SearchStats searchStats1 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0), 0, groupStats1); - SearchStats searchStats2 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0), 0, groupStats2); + groupStats2.put("group1", new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0)); + SearchStats searchStats1 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0), 0, groupStats1); + SearchStats searchStats2 = new SearchStats(new Stats(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0), 0, groupStats2); // adding these two search stats and checking group stats are correct searchStats1.add(searchStats2); diff --git a/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java b/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java index cc70c8fdcf03b..9ef888da81596 100644 --- a/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java +++ b/server/src/test/java/org/elasticsearch/search/SearchServiceSingleNodeTests.java @@ -443,7 +443,6 @@ public void testSearchWhileIndexDeleted() throws InterruptedException { assertEquals(0, service.getActiveContexts()); SearchStats.Stats totalStats = indexShard.searchStats().getTotal(); - assertEquals(0, totalStats.getDfsCurrent()); assertEquals(0, totalStats.getQueryCurrent()); assertEquals(0, totalStats.getScrollCurrent()); assertEquals(0, totalStats.getFetchCurrent()); @@ -1224,7 +1223,6 @@ public void testSearchWhileIndexDeletedDoesNotLeakSearchContext() throws Executi assertEquals(0, service.getActiveContexts()); SearchStats.Stats totalStats = indexShard.searchStats().getTotal(); - assertEquals(0, totalStats.getDfsCurrent()); assertEquals(0, totalStats.getQueryCurrent()); assertEquals(0, totalStats.getScrollCurrent()); assertEquals(0, totalStats.getFetchCurrent()); diff --git a/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java index c975ea04364bb..1155b2b5be1ec 100644 --- a/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java +++ b/server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java @@ -61,9 +61,6 @@ public void testDfsPhase() { shardSearchStatsListener.onDfsPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS)); SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal(); - assertEquals(0, stats.getDfsCurrent()); - assertEquals(1, stats.getDfsCount()); - assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); assertTrue(stats.getSearchLoadRate() > 0.0); } } @@ -75,15 +72,9 @@ public void testDfsPhase_withGroups() { SearchStats searchStats = shardSearchStatsListener.stats("_all"); SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal(); - assertEquals(0, stats.getDfsCurrent()); - assertEquals(1, stats.getDfsCount()); - assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); assertTrue(stats.getSearchLoadRate() > 0.0); stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1"); - assertEquals(0, stats.getDfsCurrent()); - assertEquals(1, stats.getDfsCount()); - assertEquals(TEN_MILLIS, stats.getDfsTimeInMillis()); assertTrue(stats.getSearchLoadRate() > 0.0); } } @@ -94,9 +85,6 @@ public void testDfsPhase_Failure() { shardSearchStatsListener.onFailedDfsPhase(sc); SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal(); - assertEquals(0, stats.getDfsCurrent()); - assertEquals(0, stats.getDfsCount()); - assertEquals(1, stats.getDfsFailure()); assertEquals(0.0, stats.getSearchLoadRate(), 0); } } diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java index d93e06fe2593f..b501591ea37d4 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java @@ -410,10 +410,6 @@ private static CommonStats mockCommonStats() { commonStats.getIndexing().add(new IndexingStats(indexingStats)); final SearchStats.Stats searchStats = new SearchStats.Stats( - no, - no, - no, - no, ++iota, ++iota, no, diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java index 9ad23b2f5ade6..5fae2bc3b67e3 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java @@ -186,27 +186,7 @@ private CommonStats mockCommonStats() { final IndexingStats.Stats indexingStats = new IndexingStats.Stats(3L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, true, 5L, 0, 0, 0, 0.0, 0.0); commonStats.getIndexing().add(new IndexingStats(indexingStats)); - final SearchStats.Stats searchStats = new SearchStats.Stats( - 0L, - 0L, - 0L, - 0L, - 6L, - 7L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - 0.0 - ); + final SearchStats.Stats searchStats = new SearchStats.Stats(6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0.0); commonStats.getSearch().add(new SearchStats(searchStats, 0L, null)); diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java index 92b2b0de55f06..dc64365a503d0 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/node/NodeStatsMonitoringDocTests.java @@ -358,10 +358,6 @@ private static NodeStats mockNodeStats() { indicesCommonStats.getRequestCache().add(new RequestCacheStats(++iota, ++iota, ++iota, ++iota)); final SearchStats.Stats searchStats = new SearchStats.Stats( - no, - no, - no, - no, ++iota, ++iota, no, From fc5195f15f929561a8e62d1295f98545828e1e87 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Jul 2025 10:10:31 +0300 Subject: [PATCH 11/13] update after reviw - revert code --- .../index/search/stats/SearchStats.java | 5 -- .../shard/SearchOperationListenerTests.java | 65 +------------------ 2 files changed, 1 insertion(+), 69 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java index 45c2ba9bd6679..4d6247796af59 100644 --- a/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java +++ b/server/src/main/java/org/elasticsearch/index/search/stats/SearchStats.java @@ -437,11 +437,6 @@ static final class Fields { static final String SEARCH = "search"; static final String OPEN_CONTEXTS = "open_contexts"; static final String GROUPS = "groups"; - static final String DFS_TOTAL = "dfs_total"; - static final String DFS_TIME = "dfs_time"; - static final String DFS_TIME_IN_MILLIS = "dfs_time_in_millis"; - static final String DFS_CURRENT = "dfs_current"; - static final String DFS_FAILURE = "dfs_failure"; static final String QUERY_TOTAL = "query_total"; static final String QUERY_TIME = "query_time"; static final String QUERY_TIME_IN_MILLIS = "query_time_in_millis"; diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index e2094d8fc841f..b89a3607acf0b 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -31,9 +31,6 @@ public class SearchOperationListenerTests extends ESTestCase { // this test also tests if calls are correct if one or more listeners throw exceptions public void testListenersAreExecuted() { - AtomicInteger onDfs = new AtomicInteger(); - AtomicInteger preDfs = new AtomicInteger(); - AtomicInteger failedDfs = new AtomicInteger(); AtomicInteger preQuery = new AtomicInteger(); AtomicInteger failedQuery = new AtomicInteger(); AtomicInteger onQuery = new AtomicInteger(); @@ -47,25 +44,6 @@ public void testListenersAreExecuted() { AtomicInteger validateSearchContext = new AtomicInteger(); AtomicInteger timeInNanos = new AtomicInteger(randomIntBetween(0, 10)); SearchOperationListener listener = new SearchOperationListener() { - @Override - public void onPreDfsPhase(SearchContext searchContext) { - assertNotNull(searchContext); - preDfs.incrementAndGet(); - } - - @Override - public void onFailedDfsPhase(SearchContext searchContext) { - assertNotNull(searchContext); - failedDfs.incrementAndGet(); - } - - @Override - public void onDfsPhase(SearchContext searchContext, long tookInNanos) { - assertEquals(timeInNanos.get(), tookInNanos); - assertNotNull(searchContext); - onDfs.incrementAndGet(); - } - @Override public void onPreQueryPhase(SearchContext searchContext) { assertNotNull(searchContext); @@ -162,13 +140,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest ); try (SearchContext ctx = new TestSearchContext((SearchExecutionContext) null)) { compositeListener.onDfsPhase(ctx, timeInNanos.get()); - assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(0, onQuery.get()); assertEquals(0, onFetch.get()); assertEquals(0, newContext.get()); @@ -178,13 +153,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onQueryPhase(ctx, timeInNanos.get()); - assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(0, onFetch.get()); assertEquals(0, newContext.get()); @@ -194,13 +166,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFetchPhase(ctx, timeInNanos.get()); - assertEquals(0, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -210,13 +179,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreDfsPhase(ctx); - assertEquals(2, preDfs.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -226,13 +192,11 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreQueryPhase(ctx); - assertEquals(2, preDfs.get()); + assertEquals(0, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -242,13 +206,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreFetchPhase(ctx); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(0, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -258,13 +219,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFailedDfsPhase(ctx); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(0, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -274,13 +232,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFailedFetchPhase(ctx); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(0, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -290,13 +245,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFailedQueryPhase(ctx); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(0, newContext.get()); @@ -306,13 +258,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onNewReaderContext(mock(ReaderContext.class)); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -322,13 +271,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onNewScrollContext(mock(ReaderContext.class)); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -338,13 +284,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFreeReaderContext(mock(ReaderContext.class)); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -354,13 +297,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onFreeScrollContext(mock(ReaderContext.class)); - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); @@ -382,13 +322,10 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertThat(expected.getSuppressed()[0], not(sameInstance(expected))); } } - assertEquals(2, preDfs.get()); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); - assertEquals(2, failedDfs.get()); assertEquals(2, failedFetch.get()); assertEquals(2, failedQuery.get()); - assertEquals(2, onDfs.get()); assertEquals(2, onQuery.get()); assertEquals(2, onFetch.get()); assertEquals(2, newContext.get()); From 9ec9ffa922a76fcb08c6e653da854468a1aab8d1 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Jul 2025 10:12:26 +0300 Subject: [PATCH 12/13] update after reviw - revert code --- .../shard/SearchOperationListenerTests.java | 39 ------------------- .../IndicesStatsMonitoringDocTests.java | 1 - 2 files changed, 40 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index b89a3607acf0b..fcad2037bc8cb 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -139,19 +139,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest logger ); try (SearchContext ctx = new TestSearchContext((SearchExecutionContext) null)) { - compositeListener.onDfsPhase(ctx, timeInNanos.get()); - assertEquals(0, preFetch.get()); - assertEquals(0, preQuery.get()); - assertEquals(0, failedFetch.get()); - assertEquals(0, failedQuery.get()); - assertEquals(0, onQuery.get()); - assertEquals(0, onFetch.get()); - assertEquals(0, newContext.get()); - assertEquals(0, newScrollContext.get()); - assertEquals(0, freeContext.get()); - assertEquals(0, freeScrollContext.get()); - assertEquals(0, validateSearchContext.get()); - compositeListener.onQueryPhase(ctx, timeInNanos.get()); assertEquals(0, preFetch.get()); assertEquals(0, preQuery.get()); @@ -178,19 +165,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, freeScrollContext.get()); assertEquals(0, validateSearchContext.get()); - compositeListener.onPreDfsPhase(ctx); - assertEquals(0, preFetch.get()); - assertEquals(0, preQuery.get()); - assertEquals(0, failedFetch.get()); - assertEquals(0, failedQuery.get()); - assertEquals(2, onQuery.get()); - assertEquals(2, onFetch.get()); - assertEquals(0, newContext.get()); - assertEquals(0, newScrollContext.get()); - assertEquals(0, freeContext.get()); - assertEquals(0, freeScrollContext.get()); - assertEquals(0, validateSearchContext.get()); - compositeListener.onPreQueryPhase(ctx); assertEquals(0, preFetch.get()); @@ -218,19 +192,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, freeScrollContext.get()); assertEquals(0, validateSearchContext.get()); - compositeListener.onFailedDfsPhase(ctx); - assertEquals(2, preFetch.get()); - assertEquals(2, preQuery.get()); - assertEquals(0, failedFetch.get()); - assertEquals(0, failedQuery.get()); - assertEquals(2, onQuery.get()); - assertEquals(2, onFetch.get()); - assertEquals(0, newContext.get()); - assertEquals(0, newScrollContext.get()); - assertEquals(0, freeContext.get()); - assertEquals(0, freeScrollContext.get()); - assertEquals(0, validateSearchContext.get()); - compositeListener.onFailedFetchPhase(ctx); assertEquals(2, preFetch.get()); assertEquals(2, preQuery.get()); diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java index 5fae2bc3b67e3..d01f2e0168a72 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndicesStatsMonitoringDocTests.java @@ -187,7 +187,6 @@ private CommonStats mockCommonStats() { commonStats.getIndexing().add(new IndexingStats(indexingStats)); final SearchStats.Stats searchStats = new SearchStats.Stats(6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0.0); - commonStats.getSearch().add(new SearchStats(searchStats, 0L, null)); final BulkStats bulkStats = new BulkStats(0L, 0L, 0L, 0L, 0L); From 49f096e43640d24706724ed74285806f95506857 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Mon, 7 Jul 2025 10:13:26 +0300 Subject: [PATCH 13/13] update after review - revert code --- .../elasticsearch/index/shard/SearchOperationListenerTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java index fcad2037bc8cb..cf8053538ec2b 100644 --- a/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java +++ b/server/src/test/java/org/elasticsearch/index/shard/SearchOperationListenerTests.java @@ -166,7 +166,6 @@ public void validateReaderContext(ReaderContext readerContext, TransportRequest assertEquals(0, validateSearchContext.get()); compositeListener.onPreQueryPhase(ctx); - assertEquals(0, preFetch.get()); assertEquals(2, preQuery.get()); assertEquals(0, failedFetch.get());