From 993fb313a1db49daae60a23f470a69b7f689fb6d Mon Sep 17 00:00:00 2001 From: wuyunfeng01 Date: Tue, 6 Aug 2019 16:26:23 +0800 Subject: [PATCH 1/3] Resolve the incorrect current scroll for deleted or closed index --- .../index/search/stats/SearchStats.java | 23 +++++++++++++++++++ .../elasticsearch/indices/IndicesService.java | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) 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 5f514b89b64a2..8497c9b18264a 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 @@ -117,6 +117,22 @@ public void add(Stats stats) { suggestCurrent += stats.suggestCurrent; } + public void addNonCurrentScroll(Stats stats) { + queryCount += stats.queryCount; + queryTimeInMillis += stats.queryTimeInMillis; + + fetchCount += stats.fetchCount; + fetchTimeInMillis += stats.fetchTimeInMillis; + + scrollCount += stats.scrollCount; + scrollTimeInMillis += stats.scrollTimeInMillis; + // need consider the count of the shard's current scroll + scrollCount += stats.scrollCurrent; + + suggestCount += stats.suggestCount; + suggestTimeInMillis += stats.suggestTimeInMillis; + } + public long getQueryCount() { return queryCount; } @@ -274,6 +290,13 @@ public void addTotals(SearchStats searchStats) { totalStats.add(searchStats.totalStats); } + public void addTotalsNonCurrentScroll(SearchStats searchStats) { + if (searchStats == null) { + return; + } + totalStats.addNonCurrentScroll(searchStats.totalStats); + } + public Stats getTotal() { return this.totalStats; } diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesService.java b/server/src/main/java/org/elasticsearch/indices/IndicesService.java index 79f4de40aeafc..07645d2ecd13c 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesService.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesService.java @@ -734,7 +734,8 @@ public synchronized void beforeIndexShardClosed(ShardId shardId, @Nullable Index if (indexShard != null) { getStats.addTotals(indexShard.getStats()); indexingStats.addTotals(indexShard.indexingStats()); - searchStats.addTotals(indexShard.searchStats()); + // if this index was closed or deleted, we should eliminate the effect of the current scroll for this shard + searchStats.addTotalsNonCurrentScroll(indexShard.searchStats()); mergeStats.addTotals(indexShard.mergeStats()); refreshStats.addTotals(indexShard.refreshStats()); flushStats.addTotals(indexShard.flushStats()); From 19c5c3a911f44c660848966de2027cbe77b8d252 Mon Sep 17 00:00:00 2001 From: wuyunfeng01 Date: Wed, 7 Aug 2019 11:24:22 +0800 Subject: [PATCH 2/3] Modify the add* function name --- .../org/elasticsearch/index/search/stats/SearchStats.java | 6 +++--- .../main/java/org/elasticsearch/indices/IndicesService.java | 2 +- 2 files changed, 4 insertions(+), 4 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 8497c9b18264a..c9f5248dbc94b 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 @@ -117,7 +117,7 @@ public void add(Stats stats) { suggestCurrent += stats.suggestCurrent; } - public void addNonCurrentScroll(Stats stats) { + public void addForClosedShard(Stats stats) { queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; @@ -290,11 +290,11 @@ public void addTotals(SearchStats searchStats) { totalStats.add(searchStats.totalStats); } - public void addTotalsNonCurrentScroll(SearchStats searchStats) { + public void addTotalsForClosedShard(SearchStats searchStats) { if (searchStats == null) { return; } - totalStats.addNonCurrentScroll(searchStats.totalStats); + totalStats.addForClosedShard(searchStats.totalStats); } public Stats getTotal() { diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesService.java b/server/src/main/java/org/elasticsearch/indices/IndicesService.java index 07645d2ecd13c..b2ce997904ec6 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesService.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesService.java @@ -735,7 +735,7 @@ public synchronized void beforeIndexShardClosed(ShardId shardId, @Nullable Index getStats.addTotals(indexShard.getStats()); indexingStats.addTotals(indexShard.indexingStats()); // if this index was closed or deleted, we should eliminate the effect of the current scroll for this shard - searchStats.addTotalsNonCurrentScroll(indexShard.searchStats()); + searchStats.addTotalsForClosedShard(indexShard.searchStats()); mergeStats.addTotals(indexShard.mergeStats()); refreshStats.addTotals(indexShard.refreshStats()); flushStats.addTotals(indexShard.flushStats()); From 858ff841ca19ece26580f9e7f8fd278bd8da9b93 Mon Sep 17 00:00:00 2001 From: wuyunfeng01 Date: Tue, 3 Sep 2019 17:02:28 +0800 Subject: [PATCH 3/3] Modify function name --- .../org/elasticsearch/index/search/stats/SearchStats.java | 6 +++--- .../main/java/org/elasticsearch/indices/IndicesService.java | 2 +- 2 files changed, 4 insertions(+), 4 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 c9f5248dbc94b..7dc3ae4785cff 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 @@ -117,7 +117,7 @@ public void add(Stats stats) { suggestCurrent += stats.suggestCurrent; } - public void addForClosedShard(Stats stats) { + public void addForClosingShard(Stats stats) { queryCount += stats.queryCount; queryTimeInMillis += stats.queryTimeInMillis; @@ -290,11 +290,11 @@ public void addTotals(SearchStats searchStats) { totalStats.add(searchStats.totalStats); } - public void addTotalsForClosedShard(SearchStats searchStats) { + public void addTotalsForClosingShard(SearchStats searchStats) { if (searchStats == null) { return; } - totalStats.addForClosedShard(searchStats.totalStats); + totalStats.addForClosingShard(searchStats.totalStats); } public Stats getTotal() { diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesService.java b/server/src/main/java/org/elasticsearch/indices/IndicesService.java index b2ce997904ec6..c3f2af4f5d4b3 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesService.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesService.java @@ -735,7 +735,7 @@ public synchronized void beforeIndexShardClosed(ShardId shardId, @Nullable Index getStats.addTotals(indexShard.getStats()); indexingStats.addTotals(indexShard.indexingStats()); // if this index was closed or deleted, we should eliminate the effect of the current scroll for this shard - searchStats.addTotalsForClosedShard(indexShard.searchStats()); + searchStats.addTotalsForClosingShard(indexShard.searchStats()); mergeStats.addTotals(indexShard.mergeStats()); refreshStats.addTotals(indexShard.refreshStats()); flushStats.addTotals(indexShard.flushStats());