From bd51b6b96a36ffa3e04c81ab66032a61983d76c4 Mon Sep 17 00:00:00 2001 From: Luca Cavanna Date: Tue, 12 Jun 2018 21:00:33 +0200 Subject: [PATCH] REST hl client: adjust wait_for_active_shards param in cluster health (#31266) The default wait_for_active_shards is NONE for cluster health, which differs from all the other API in master, hence we need to make sure to set the parameter whenever it differs from NONE (0). The test around this also had a bug, which is why this was not originally uncovered. Relates to #29331 --- .../client/RequestConverters.java | 8 +++++-- .../client/RequestConvertersTests.java | 23 ++++++++++--------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java index e2b61dc41de..93bf6a1a198 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java @@ -721,7 +721,7 @@ final class RequestConverters { .withWaitForStatus(healthRequest.waitForStatus()) .withWaitForNoRelocatingShards(healthRequest.waitForNoRelocatingShards()) .withWaitForNoInitializingShards(healthRequest.waitForNoInitializingShards()) - .withWaitForActiveShards(healthRequest.waitForActiveShards()) + .withWaitForActiveShards(healthRequest.waitForActiveShards(), ActiveShardCount.NONE) .withWaitForNodes(healthRequest.waitForNodes()) .withWaitForEvents(healthRequest.waitForEvents()) .withTimeout(healthRequest.timeout()) @@ -1047,7 +1047,11 @@ final class RequestConverters { } Params withWaitForActiveShards(ActiveShardCount activeShardCount) { - if (activeShardCount != null && activeShardCount != ActiveShardCount.DEFAULT) { + return withWaitForActiveShards(activeShardCount, ActiveShardCount.DEFAULT); + } + + Params withWaitForActiveShards(ActiveShardCount activeShardCount, ActiveShardCount defaultActiveShardCount) { + if (activeShardCount != null && activeShardCount != defaultActiveShardCount) { return putParam("wait_for_active_shards", activeShardCount.toString().toLowerCase(Locale.ROOT)); } return this; diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java index 1e03e55f61f..5bc9bac96dc 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java @@ -1562,7 +1562,7 @@ public class RequestConvertersTests extends ESTestCase { default: throw new UnsupportedOperationException(); } - setRandomWaitForActiveShards(healthRequest::waitForActiveShards, expectedParams, "0"); + setRandomWaitForActiveShards(healthRequest::waitForActiveShards, ActiveShardCount.NONE, expectedParams); if (randomBoolean()) { ClusterHealthRequest.Level level = randomFrom(ClusterHealthRequest.Level.values()); healthRequest.level(level); @@ -2187,23 +2187,24 @@ public class RequestConvertersTests extends ESTestCase { } private static void setRandomWaitForActiveShards(Consumer setter, Map expectedParams) { - setRandomWaitForActiveShards(setter, expectedParams, null); + setRandomWaitForActiveShards(setter, ActiveShardCount.DEFAULT, expectedParams); } - private static void setRandomWaitForActiveShards(Consumer setter,Map expectedParams, - String defaultValue) { + private static void setRandomWaitForActiveShards(Consumer setter, ActiveShardCount defaultActiveShardCount, + Map expectedParams) { if (randomBoolean()) { + int waitForActiveShardsInt = randomIntBetween(-1, 5); String waitForActiveShardsString; - int waitForActiveShards = randomIntBetween(-1, 5); - if (waitForActiveShards == -1) { + if (waitForActiveShardsInt == -1) { waitForActiveShardsString = "all"; } else { - waitForActiveShardsString = String.valueOf(waitForActiveShards); + waitForActiveShardsString = String.valueOf(waitForActiveShardsInt); + } + ActiveShardCount activeShardCount = ActiveShardCount.parseString(waitForActiveShardsString); + setter.accept(activeShardCount); + if (defaultActiveShardCount.equals(activeShardCount) == false) { + expectedParams.put("wait_for_active_shards", waitForActiveShardsString); } - setter.accept(ActiveShardCount.parseString(waitForActiveShardsString)); - expectedParams.put("wait_for_active_shards", waitForActiveShardsString); - } else if (defaultValue != null) { - expectedParams.put("wait_for_active_shards", defaultValue); } }