1414import org .elasticsearch .Build ;
1515import org .elasticsearch .action .admin .cluster .desirednodes .UpdateDesiredNodesRequest ;
1616import org .elasticsearch .client .Request ;
17- import org .elasticsearch .client .ResponseException ;
1817import org .elasticsearch .cluster .metadata .DesiredNode ;
1918import org .elasticsearch .cluster .metadata .DesiredNodeWithStatus ;
2019import org .elasticsearch .common .Strings ;
@@ -42,22 +41,7 @@ public DesiredNodesUpgradeIT(@Name("upgradedNodes") int upgradedNodes) {
4241 desiredNodesVersion = upgradedNodes + 1 ;
4342 }
4443
45- private enum ProcessorsPrecision {
46- DOUBLE ,
47- FLOAT
48- }
49-
5044 public void testUpgradeDesiredNodes () throws Exception {
51- if (oldClusterHasFeature (DesiredNode .DOUBLE_PROCESSORS_SUPPORTED )) {
52- assertUpgradedNodesCanReadDesiredNodes ();
53- } else if (oldClusterHasFeature (DesiredNode .RANGE_FLOAT_PROCESSORS_SUPPORTED )) {
54- assertDesiredNodesUpdatedWithRoundedUpFloatsAreIdempotent ();
55- } else {
56- assertDesiredNodesWithFloatProcessorsAreRejectedInOlderVersions ();
57- }
58- }
59-
60- private void assertUpgradedNodesCanReadDesiredNodes () throws Exception {
6145 if (isMixedCluster () || isUpgradedCluster ()) {
6246 final Map <String , Object > desiredNodes = getLatestDesiredNodes ();
6347 final String historyId = extractValue (desiredNodes , "history_id" );
@@ -66,60 +50,10 @@ private void assertUpgradedNodesCanReadDesiredNodes() throws Exception {
6650 assertThat (version , is (equalTo (desiredNodesVersion - 1 )));
6751 }
6852
69- addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (desiredNodesVersion , ProcessorsPrecision . DOUBLE );
53+ addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (desiredNodesVersion );
7054 assertAllDesiredNodesAreActualized ();
7155 }
7256
73- private void assertDesiredNodesUpdatedWithRoundedUpFloatsAreIdempotent () throws Exception {
74- // We define the same set of desired nodes to ensure that they are equal across all
75- // the test runs, otherwise we cannot guarantee an idempotent update in this test
76- final var desiredNodes = getNodeNames ().stream ()
77- .map (
78- nodeName -> new DesiredNode (
79- Settings .builder ().put (NODE_NAME_SETTING .getKey (), nodeName ).build (),
80- 1238.49922909 ,
81- ByteSizeValue .ofGb (32 ),
82- ByteSizeValue .ofGb (128 ),
83- clusterHasFeature (DesiredNode .DESIRED_NODE_VERSION_DEPRECATED ) ? null : Build .current ().version ()
84- )
85- )
86- .toList ();
87-
88- if (isMixedCluster ()) {
89- updateDesiredNodes (desiredNodes , desiredNodesVersion - 1 );
90- }
91- for (int i = 0 ; i < 2 ; i ++) {
92- updateDesiredNodes (desiredNodes , desiredNodesVersion );
93- }
94-
95- final Map <String , Object > latestDesiredNodes = getLatestDesiredNodes ();
96- final int latestDesiredNodesVersion = extractValue (latestDesiredNodes , "version" );
97- assertThat (latestDesiredNodesVersion , is (equalTo (desiredNodesVersion )));
98-
99- if (isUpgradedCluster ()) {
100- assertAllDesiredNodesAreActualized ();
101- }
102- }
103-
104- private void assertDesiredNodesWithFloatProcessorsAreRejectedInOlderVersions () throws Exception {
105- if (isOldCluster ()) {
106- addClusterNodesToDesiredNodesWithIntegerProcessors (1 );
107- } else if (isMixedCluster ()) {
108- // Processor ranges or float processors are forbidden during upgrades: 8.2 -> 8.3 clusters
109- final var responseException = expectThrows (
110- ResponseException .class ,
111- () -> addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (desiredNodesVersion , ProcessorsPrecision .FLOAT )
112- );
113- final var statusCode = responseException .getResponse ().getStatusLine ().getStatusCode ();
114- assertThat (statusCode , is (equalTo (400 )));
115- } else {
116- assertAllDesiredNodesAreActualized ();
117- addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (4 , ProcessorsPrecision .FLOAT );
118- }
119-
120- getLatestDesiredNodes ();
121- }
122-
12357 private Map <String , Object > getLatestDesiredNodes () throws IOException {
12458 final var getDesiredNodesRequest = new Request ("GET" , "/_internal/desired_nodes/_latest" );
12559 final var response = client ().performRequest (getDesiredNodesRequest );
@@ -140,15 +74,14 @@ private void assertAllDesiredNodesAreActualized() throws Exception {
14074 }
14175 }
14276
143- private void addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (int version , ProcessorsPrecision processorsPrecision )
144- throws Exception {
77+ private void addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges (int version ) throws Exception {
14578 final List <DesiredNode > nodes ;
14679 if (randomBoolean ()) {
14780 nodes = getNodeNames ().stream ()
14881 .map (
14982 nodeName -> new DesiredNode (
15083 Settings .builder ().put (NODE_NAME_SETTING .getKey (), nodeName ).build (),
151- processorsPrecision == ProcessorsPrecision . DOUBLE ? randomDoubleProcessorCount () : 0.5f ,
84+ randomDoubleProcessorCount (),
15285 ByteSizeValue .ofGb (randomIntBetween (10 , 24 )),
15386 ByteSizeValue .ofGb (randomIntBetween (128 , 256 )),
15487 clusterHasFeature (DesiredNode .DESIRED_NODE_VERSION_DEPRECATED ) ? null : Build .current ().version ()
@@ -157,9 +90,7 @@ private void addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges(int ve
15790 .toList ();
15891 } else {
15992 nodes = getNodeNames ().stream ().map (nodeName -> {
160- double minProcessors = processorsPrecision == ProcessorsPrecision .DOUBLE
161- ? randomDoubleProcessorCount ()
162- : randomFloatProcessorCount ();
93+ double minProcessors = randomDoubleProcessorCount ();
16394 return new DesiredNode (
16495 Settings .builder ().put (NODE_NAME_SETTING .getKey (), nodeName ).build (),
16596 new DesiredNode .ProcessorsRange (minProcessors , minProcessors + randomIntBetween (10 , 20 )),
@@ -172,21 +103,6 @@ private void addClusterNodesToDesiredNodesWithProcessorsOrProcessorRanges(int ve
172103 updateDesiredNodes (nodes , version );
173104 }
174105
175- private void addClusterNodesToDesiredNodesWithIntegerProcessors (int version ) throws Exception {
176- final var nodes = getNodeNames ().stream ()
177- .map (
178- nodeName -> new DesiredNode (
179- Settings .builder ().put (NODE_NAME_SETTING .getKey (), nodeName ).build (),
180- randomIntBetween (1 , 24 ),
181- ByteSizeValue .ofGb (randomIntBetween (10 , 24 )),
182- ByteSizeValue .ofGb (randomIntBetween (128 , 256 )),
183- clusterHasFeature (DesiredNode .DESIRED_NODE_VERSION_DEPRECATED ) ? null : Build .current ().version ()
184- )
185- )
186- .toList ();
187- updateDesiredNodes (nodes , version );
188- }
189-
190106 private void updateDesiredNodes (List <DesiredNode > nodes , int version ) throws IOException {
191107 final var request = new Request ("PUT" , "/_internal/desired_nodes/upgrade_test/" + version );
192108 try (var builder = JsonXContent .contentBuilder ()) {
@@ -223,10 +139,6 @@ private double randomDoubleProcessorCount() {
223139 return randomDoubleBetween (0.5 , 512.1234 , true );
224140 }
225141
226- private float randomFloatProcessorCount () {
227- return randomIntBetween (1 , 512 ) + randomFloat ();
228- }
229-
230142 @ SuppressWarnings ("unchecked" )
231143 private static <T > T extractValue (Map <String , Object > map , String path ) {
232144 return (T ) XContentMapValues .extractValue (path , map );
0 commit comments