From 6e6ca043759bc9e560c5c500b599367f9cd7b81e Mon Sep 17 00:00:00 2001 From: Albert Zaharovits Date: Wed, 2 Apr 2025 12:57:36 +0300 Subject: [PATCH 1/2] Fix IndexStatsIT --- muted-tests.yml | 3 -- .../indices/stats/IndexStatsIT.java | 51 ++++++++++--------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index 75768152d0dad..7bdc7b835a40b 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -368,9 +368,6 @@ tests: - class: org.elasticsearch.xpack.test.rest.XPackRestIT method: test {p0=ml/start_data_frame_analytics/Test start given dest index is not empty} issue: https://github.com/elastic/elasticsearch/issues/125909 -- class: org.elasticsearch.indices.stats.IndexStatsIT - method: testThrottleStats - issue: https://github.com/elastic/elasticsearch/issues/125910 - class: org.elasticsearch.xpack.esql.action.ManyShardsIT method: testCancelUnnecessaryRequests issue: https://github.com/elastic/elasticsearch/issues/125947 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 b5f10002e217e..bb5280df82501 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java @@ -467,9 +467,9 @@ public void testNonThrottleStats() throws Exception { assertThat(stats.getPrimaries().getIndexing().getTotal().getThrottleTime().millis(), equalTo(0L)); } - public void testThrottleStats() { + public void testThrottleStats() throws Exception { assertAcked( - prepareCreate("test").setSettings( + prepareCreate("test_throttle_stats_index").setSettings( settingsBuilder().put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, "1") .put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, "0") .put(MergePolicyConfig.INDEX_MERGE_POLICY_MAX_MERGE_AT_ONCE_SETTING.getKey(), "2") @@ -479,15 +479,13 @@ public void testThrottleStats() { .put(IndexSettings.INDEX_TRANSLOG_DURABILITY_SETTING.getKey(), Translog.Durability.ASYNC.name()) ) ); - ensureGreen(); + ensureGreen("test_throttle_stats_index"); // make sure we see throttling kicking in: AtomicBoolean done = new AtomicBoolean(); AtomicLong termUpTo = new AtomicLong(); - long start = System.currentTimeMillis(); - for (int threadIdx = 0; threadIdx < 5; threadIdx++) { - int finalThreadIdx = threadIdx; - new Thread(() -> { - IndicesStatsResponse stats; + Thread[] indexingThreads = new Thread[5]; + for (int threadIdx = 0; threadIdx < indexingThreads.length; threadIdx++) { + indexingThreads[threadIdx] = new Thread(() -> { while (done.get() == false) { for (int i = 0; i < 100; i++) { // Provoke slowish merging by making many unique terms: @@ -496,30 +494,35 @@ public void testThrottleStats() { sb.append(' '); sb.append(termUpTo.incrementAndGet()); } - prepareIndex("test").setId("" + termUpTo.get()).setSource("field" + (i % 10), sb.toString()).get(); + prepareIndex("test_throttle_stats_index").setId("" + termUpTo.get()) + .setSource("field" + (i % 10), sb.toString()) + .get(); if (i % 2 == 0) { - refresh(); + refresh("test_throttle_stats_index"); } } - refresh(); - if (finalThreadIdx == 0) { - stats = indicesAdmin().prepareStats().get(); - done.set(stats.getPrimaries().getIndexing().getTotal().getThrottleTime().millis() > 0); - } - if (System.currentTimeMillis() - start > 300 * 1000) { // Wait 5 minutes for throttling to kick in - done.set(true); - fail("index throttling didn't kick in after 5 minutes of intense merging"); - } + refresh("test_throttle_stats_index"); } - }).start(); + }); + indexingThreads[threadIdx].start(); + } + + assertBusy(() -> { + IndicesStatsResponse stats = indicesAdmin().prepareStats("test_throttle_stats_index").get(); + assertTrue(stats.getPrimaries().getIndexing().getTotal().getThrottleTime().millis() > 0); + done.set(true); + }, 5L, TimeUnit.MINUTES); + + for (Thread indexingThread : indexingThreads) { + indexingThread.join(); } // Optimize & flush and wait; else we sometimes get a "Delete Index failed - not acked" // when ESIntegTestCase.after tries to remove indices created by the test: - logger.info("test: now optimize"); - indicesAdmin().prepareForceMerge("test").get(); - flush(); - logger.info("test: test done"); + logger.info("test throttle stats: now optimize"); + indicesAdmin().prepareForceMerge("test_throttle_stats_index").get(); + flush("test_throttle_stats_index"); + logger.info("test throttle stats: test done"); } public void testSimpleStats() throws Exception { From 445b51b937f82fa414873b7e23f7f43c9a7a9418 Mon Sep 17 00:00:00 2001 From: Albert Zaharovits Date: Wed, 2 Apr 2025 21:08:39 +0300 Subject: [PATCH 2/2] auto throttle true for testThrottleStats --- .../java/org/elasticsearch/indices/stats/IndexStatsIT.java | 1 + 1 file changed, 1 insertion(+) 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 bb5280df82501..31dd14a37b9a1 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/indices/stats/IndexStatsIT.java @@ -476,6 +476,7 @@ public void testThrottleStats() throws Exception { .put(MergePolicyConfig.INDEX_MERGE_POLICY_SEGMENTS_PER_TIER_SETTING.getKey(), "2") .put(MergeSchedulerConfig.MAX_THREAD_COUNT_SETTING.getKey(), "1") .put(MergeSchedulerConfig.MAX_MERGE_COUNT_SETTING.getKey(), "1") + .put(MergeSchedulerConfig.AUTO_THROTTLE_SETTING.getKey(), "true") .put(IndexSettings.INDEX_TRANSLOG_DURABILITY_SETTING.getKey(), Translog.Durability.ASYNC.name()) ) );