diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/cat.shards/10_basic.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/cat.shards/10_basic.yml
index 29fbf55417961..77b02bc601e86 100644
--- a/rest-api-spec/src/main/resources/rest-api-spec/test/cat.shards/10_basic.yml
+++ b/rest-api-spec/src/main/resources/rest-api-spec/test/cat.shards/10_basic.yml
@@ -1,13 +1,108 @@
"Help":
- skip:
- version: " - 2.11.99"
+ version: " - 2.99.99"
+ reason: search idle reactivate count total is only added in 3.0.0
+ features: node_selector
+ - do:
+ cat.shards:
+ help: true
+ node_selector:
+ version: "3.0.0 - "
+
+ - match:
+ $body: |
+ /^ index .+ \n
+ shard .+ \n
+ prirep .+ \n
+ state .+ \n
+ docs .+ \n
+ store .+ \n
+ ip .+ \n
+ id .+ \n
+ node .+ \n
+ sync_id .+ \n
+ unassigned.reason .+ \n
+ unassigned.at .+ \n
+ unassigned.for .+ \n
+ unassigned.details .+ \n
+ recoverysource.type .+ \n
+ completion.size .+ \n
+ fielddata.memory_size .+ \n
+ fielddata.evictions .+ \n
+ query_cache.memory_size .+ \n
+ query_cache.evictions .+ \n
+ flush.total .+ \n
+ flush.total_time .+ \n
+ get.current .+ \n
+ get.time .+ \n
+ get.total .+ \n
+ get.exists_time .+ \n
+ get.exists_total .+ \n
+ get.missing_time .+ \n
+ get.missing_total .+ \n
+ indexing.delete_current .+ \n
+ indexing.delete_time .+ \n
+ indexing.delete_total .+ \n
+ indexing.index_current .+ \n
+ indexing.index_time .+ \n
+ indexing.index_total .+ \n
+ indexing.index_failed .+ \n
+ merges.current .+ \n
+ merges.current_docs .+ \n
+ merges.current_size .+ \n
+ merges.total .+ \n
+ merges.total_docs .+ \n
+ merges.total_size .+ \n
+ merges.total_time .+ \n
+ refresh.total .+ \n
+ refresh.time .+ \n
+ refresh.external_total .+ \n
+ refresh.external_time .+ \n
+ refresh.listeners .+ \n
+ search.fetch_current .+ \n
+ search.fetch_time .+ \n
+ search.fetch_total .+ \n
+ search.open_contexts .+ \n
+ search.query_current .+ \n
+ search.query_time .+ \n
+ search.query_total .+ \n
+ search.concurrent_query_current .+ \n
+ search.concurrent_query_time .+ \n
+ search.concurrent_query_total .+ \n
+ search.concurrent_avg_slice_count .+ \n
+ search.scroll_current .+ \n
+ search.scroll_time .+ \n
+ search.scroll_total .+ \n
+ search.point_in_time_current .+ \n
+ search.point_in_time_time .+ \n
+ search.point_in_time_total .+ \n
+ search.search_idle_reactivate_count_total .+ \n
+ segments.count .+ \n
+ segments.memory .+ \n
+ segments.index_writer_memory .+ \n
+ segments.version_map_memory .+ \n
+ segments.fixed_bitset_memory .+ \n
+ seq_no.max .+ \n
+ seq_no.local_checkpoint .+ \n
+ seq_no.global_checkpoint .+ \n
+ warmer.current .+ \n
+ warmer.total .+ \n
+ warmer.total_time .+ \n
+ path.data .+ \n
+ path.state .+ \n
+ docs.deleted .+ \n
+ $/
+---
+"Help":
+ - skip:
+ version: " - 2.11.99 , 3.0.0 - "
reason: deleted docs and concurrent search are added in 2.12.0
features: node_selector
- do:
cat.shards:
help: true
node_selector:
- version: "2.12.0 - "
+ version: "2.12.0 - 2.99.99"
- match:
$body: |
diff --git a/server/src/main/java/org/opensearch/index/shard/IndexShard.java b/server/src/main/java/org/opensearch/index/shard/IndexShard.java
index aa7360689225a..d2ca3b3331db5 100644
--- a/server/src/main/java/org/opensearch/index/shard/IndexShard.java
+++ b/server/src/main/java/org/opensearch/index/shard/IndexShard.java
@@ -1859,10 +1859,6 @@ public Engine.Searcher acquireSearcher(String source) {
}
private void markSearcherAccessed() {
- if (isSearchIdle()) {
- SearchOperationListener searchOperationListener = getSearchOperationListener();
- searchOperationListener.onSearchIdleReactivation();
- }
lastSearcherAccess.lazySet(threadPool.relativeTimeInMillis());
}
@@ -4591,9 +4587,14 @@ public void afterRefresh(boolean didRefresh) {
* true
if the listener was registered to wait for a refresh.
*/
public final void awaitShardSearchActive(Consumer listener) {
+ boolean isSearchIdle = isSearchIdle();
markSearcherAccessed(); // move the shard into non-search idle
final Translog.Location location = pendingRefreshLocation.get();
if (location != null) {
+ if (isSearchIdle) {
+ SearchOperationListener searchOperationListener = getSearchOperationListener();
+ searchOperationListener.onSearchIdleReactivation();
+ }
addRefreshListener(location, (b) -> {
pendingRefreshLocation.compareAndSet(location, null);
listener.accept(true);
diff --git a/server/src/main/java/org/opensearch/rest/action/cat/RestIndicesAction.java b/server/src/main/java/org/opensearch/rest/action/cat/RestIndicesAction.java
index 55cb1dd760d4b..9dc711f804144 100644
--- a/server/src/main/java/org/opensearch/rest/action/cat/RestIndicesAction.java
+++ b/server/src/main/java/org/opensearch/rest/action/cat/RestIndicesAction.java
@@ -641,15 +641,6 @@ protected Table getTableWithHeader(final RestRequest request) {
);
table.addCell("pri.search.point_in_time_total", "default:false;text-align:right;desc:completed point in time contexts");
- table.addCell(
- "search.search_idle_reactivate_count_total",
- "sibling:pri;alias:ssirct,searchSearchIdleReactivateCountTotal;default:false;text-align:right;desc:number of times a shard reactivated"
- );
- table.addCell(
- "pri.search.search_idle_reactivate_count_total",
- "default:false;text-align:right;desc:number of times a shard reactivated"
- );
-
table.addCell("segments.count", "sibling:pri;alias:sc,segmentsCount;default:false;text-align:right;desc:number of segments");
table.addCell("pri.segments.count", "default:false;text-align:right;desc:number of segments");
@@ -952,9 +943,6 @@ Table buildTable(
table.addCell(totalStats.getSearch() == null ? null : totalStats.getSearch().getTotal().getPitCount());
table.addCell(primaryStats.getSearch() == null ? null : primaryStats.getSearch().getTotal().getPitCount());
- table.addCell(totalStats.getSearch() == null ? null : totalStats.getSearch().getTotal().getSearchIdleReactivateCount());
- table.addCell(primaryStats.getSearch() == null ? null : primaryStats.getSearch().getTotal().getSearchIdleReactivateCount());
-
table.addCell(totalStats.getSegments() == null ? null : totalStats.getSegments().getCount());
table.addCell(primaryStats.getSegments() == null ? null : primaryStats.getSegments().getCount());
diff --git a/server/src/main/java/org/opensearch/rest/action/cat/RestNodesAction.java b/server/src/main/java/org/opensearch/rest/action/cat/RestNodesAction.java
index 96cbfba4072a9..e11012a23fce7 100644
--- a/server/src/main/java/org/opensearch/rest/action/cat/RestNodesAction.java
+++ b/server/src/main/java/org/opensearch/rest/action/cat/RestNodesAction.java
@@ -338,10 +338,6 @@ protected Table getTableWithHeader(final RestRequest request) {
"search.point_in_time_total",
"alias:scto,searchPointInTimeTotal;default:false;text-align:right;desc:completed point in time contexts"
);
- table.addCell(
- "search.search_idle_reactivate_count_total",
- "alias:ssirct,searchSearchIdleReactivateCountTotal;default:false;text-align:right;desc:number of times a shard reactivated"
- );
table.addCell("segments.count", "alias:sc,segmentsCount;default:false;text-align:right;desc:number of segments");
table.addCell("segments.memory", "alias:sm,segmentsMemory;default:false;text-align:right;desc:memory used by segments");
@@ -559,7 +555,6 @@ Table buildTable(
table.addCell(searchStats == null ? null : searchStats.getTotal().getPitCurrent());
table.addCell(searchStats == null ? null : searchStats.getTotal().getPitTime());
table.addCell(searchStats == null ? null : searchStats.getTotal().getPitCount());
- table.addCell(searchStats == null ? null : searchStats.getTotal().getSearchIdleReactivateCount());
SegmentsStats segmentsStats = indicesStats == null ? null : indicesStats.getSegments();
table.addCell(segmentsStats == null ? null : segmentsStats.getCount());