From 66a6dee721ea3a438b8d436738bf5b12e0c7729e Mon Sep 17 00:00:00 2001 From: Henning Andersen Date: Fri, 10 Jan 2020 15:11:40 +0100 Subject: [PATCH 1/2] Fix testSkipRefreshIfShardIsRefreshingAlready The test checked queue size and active count, however, ThreadPoolExecutor pulls out the request from the queue before marking the worker active, risking that we think all tasks are done when they are not. Now check on completed-tasks metric instead, which is guaranteed to be monotonic. Relates #50769 --- .../indices/IndexingMemoryControllerTests.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java b/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java index 5a4fc6e07a873..1f154fd95d414 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java @@ -432,20 +432,20 @@ protected long getShardWritingBytes(IndexShard shard) { } }; int iterations = randomIntBetween(10, 100); + ThreadPoolStats.Stats beforeStats = getRefreshThreadPoolStats(); for (int i = 0; i < iterations; i++) { controller.forceCheck(); } assertBusy(() -> { ThreadPoolStats.Stats stats = getRefreshThreadPoolStats(); - assertThat(stats.getQueue(), equalTo(0)); - assertThat(stats.getActive(), equalTo(1)); + assertThat(stats.getCompleted(), equalTo(beforeStats.getCompleted() + iterations - 1)); }); refreshLatch.get().countDown(); // allow refresh assertBusy(() -> { ThreadPoolStats.Stats stats = getRefreshThreadPoolStats(); - assertThat(stats.getQueue(), equalTo(0)); - assertThat(stats.getActive(), equalTo(0)); + assertThat(stats.getCompleted(), equalTo(beforeStats.getCompleted() + iterations)); }); + System.out.println(shard.refreshStats().getTotal()); assertThat(shard.refreshStats().getTotal(), equalTo(refreshStats.getTotal() + 1)); closeShards(shard); } From 1b8867eba3c804db2852bed662c16248c5b0d79c Mon Sep 17 00:00:00 2001 From: Henning Andersen Date: Fri, 10 Jan 2020 15:14:34 +0100 Subject: [PATCH 2/2] Removed print statement. --- .../org/elasticsearch/indices/IndexingMemoryControllerTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java b/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java index 1f154fd95d414..9d7a77583f48d 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndexingMemoryControllerTests.java @@ -445,7 +445,6 @@ protected long getShardWritingBytes(IndexShard shard) { ThreadPoolStats.Stats stats = getRefreshThreadPoolStats(); assertThat(stats.getCompleted(), equalTo(beforeStats.getCompleted() + iterations)); }); - System.out.println(shard.refreshStats().getTotal()); assertThat(shard.refreshStats().getTotal(), equalTo(refreshStats.getTotal() + 1)); closeShards(shard); }