@@ -205,6 +205,19 @@ public void testUpdateWithUnknownAndSettings() {
205
205
final Settings .Builder existingPersistentSettings = Settings .builder ();
206
206
final Settings .Builder existingTransientSettings = Settings .builder ();
207
207
208
+ for (final Setting <String > dynamicSetting : dynamicSettings ) {
209
+ switch (randomIntBetween (0 , 2 )) {
210
+ case 0 :
211
+ existingPersistentSettings .put (dynamicSetting .getKey (), "existing_value" );
212
+ break ;
213
+ case 1 :
214
+ existingTransientSettings .put (dynamicSetting .getKey (), "existing_value" );
215
+ break ;
216
+ case 2 :
217
+ break ;
218
+ }
219
+ }
220
+
208
221
for (final Setting <String > invalidSetting : invalidSettings ) {
209
222
if (randomBoolean ()) {
210
223
existingPersistentSettings .put (invalidSetting .getKey (), "value" );
@@ -242,16 +255,31 @@ public void testUpdateWithUnknownAndSettings() {
242
255
final Settings .Builder persistentToApply = Settings .builder ();
243
256
final Settings .Builder transientToApply = Settings .builder ();
244
257
for (final Setting <String > dynamicSetting : dynamicSettings ) {
258
+ switch (randomIntBetween (0 , 2 )) {
259
+ case 0 :
260
+ persistentToApply .put (dynamicSetting .getKey (), "new_value" );
261
+ break ;
262
+ case 1 :
263
+ transientToApply .put (dynamicSetting .getKey (), "new_value" );
264
+ break ;
265
+ case 2 :
266
+ break ;
267
+ }
268
+ }
269
+
270
+ if (transientToApply .keys ().isEmpty () && persistentToApply .keys ().isEmpty ()) {
271
+ // force a settings update otherwise our assertions below will fail
245
272
if (randomBoolean ()) {
246
- persistentToApply .put (dynamicSetting . getKey (), "value " );
273
+ persistentToApply .put (dynamicSettings . get ( 0 ). getKey (), "new_value " );
247
274
} else {
248
- transientToApply .put (dynamicSetting . getKey (), "value " );
275
+ transientToApply .put (dynamicSettings . get ( 0 ). getKey (), "new_value " );
249
276
}
250
277
}
278
+
251
279
final ClusterState clusterStateAfterUpdate =
252
280
settingsUpdater .updateSettings (clusterState , transientToApply .build (), persistentToApply .build (), logger );
253
281
254
- // the invalid settings should be archived
282
+ // the invalid settings should be archived and not present in non-archived form
255
283
for (final Setting <String > invalidSetting : invalidSettings ) {
256
284
if (existingPersistentSettings .keys ().contains (invalidSetting .getKey ())) {
257
285
assertThat (
@@ -262,9 +290,15 @@ public void testUpdateWithUnknownAndSettings() {
262
290
clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
263
291
hasItem (ARCHIVED_SETTINGS_PREFIX + invalidSetting .getKey ()));
264
292
}
293
+ assertThat (
294
+ clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (),
295
+ not (hasItem (invalidSetting .getKey ())));
296
+ assertThat (
297
+ clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
298
+ not (hasItem (invalidSetting .getKey ())));
265
299
}
266
300
267
- // the unknown settings should be archived
301
+ // the unknown settings should be archived and not present in non-archived form
268
302
for (final Setting <String > unknownSetting : unknownSettings ) {
269
303
if (existingPersistentSettings .keys ().contains (unknownSetting .getKey ())) {
270
304
assertThat (
@@ -275,14 +309,37 @@ public void testUpdateWithUnknownAndSettings() {
275
309
clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
276
310
hasItem (ARCHIVED_SETTINGS_PREFIX + unknownSetting .getKey ()));
277
311
}
312
+ assertThat (
313
+ clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (),
314
+ not (hasItem (unknownSetting .getKey ())));
315
+ assertThat (
316
+ clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
317
+ not (hasItem (unknownSetting .getKey ())));
278
318
}
279
319
280
320
// the dynamic settings should be applied
281
321
for (final Setting <String > dynamicSetting : dynamicSettings ) {
282
322
if (persistentToApply .keys ().contains (dynamicSetting .getKey ())) {
283
323
assertThat (clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (), hasItem (dynamicSetting .getKey ()));
284
- } else {
324
+ assertThat (clusterStateAfterUpdate .metaData ().persistentSettings ().get (dynamicSetting .getKey ()), equalTo ("new_value" ));
325
+ } else if (transientToApply .keys ().contains (dynamicSetting .getKey ())) {
285
326
assertThat (clusterStateAfterUpdate .metaData ().transientSettings ().keySet (), hasItem (dynamicSetting .getKey ()));
327
+ assertThat (clusterStateAfterUpdate .metaData ().transientSettings ().get (dynamicSetting .getKey ()), equalTo ("new_value" ));
328
+ } else {
329
+ if (existingPersistentSettings .keys ().contains (dynamicSetting .getKey ())) {
330
+ assertThat (clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (), hasItem (dynamicSetting .getKey ()));
331
+ assertThat (
332
+ clusterStateAfterUpdate .metaData ().persistentSettings ().get (dynamicSetting .getKey ()),
333
+ equalTo ("existing_value" ));
334
+ } else if (existingTransientSettings .keys ().contains (dynamicSetting .getKey ())) {
335
+ assertThat (clusterStateAfterUpdate .metaData ().transientSettings ().keySet (), hasItem (dynamicSetting .getKey ()));
336
+ assertThat (
337
+ clusterStateAfterUpdate .metaData ().transientSettings ().get (dynamicSetting .getKey ()),
338
+ equalTo ("existing_value" ));
339
+ } else {
340
+ assertThat (clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (), not (hasItem (dynamicSetting .getKey ())));
341
+ assertThat (clusterStateAfterUpdate .metaData ().transientSettings ().keySet (), not (hasItem (dynamicSetting .getKey ())));
342
+ }
286
343
}
287
344
}
288
345
}
@@ -377,7 +434,7 @@ public void testRemovingArchivedSettingsDoesNotRemoveNonArchivedInvalidOrUnknown
377
434
}
378
435
}
379
436
380
- // the invalid settings should be archived
437
+ // the invalid settings should be archived and not present in non-archived form
381
438
for (final Setting <String > invalidSetting : invalidSettings ) {
382
439
if (existingPersistentSettings .keys ().contains (invalidSetting .getKey ())) {
383
440
assertThat (
@@ -388,9 +445,15 @@ public void testRemovingArchivedSettingsDoesNotRemoveNonArchivedInvalidOrUnknown
388
445
clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
389
446
hasItem (ARCHIVED_SETTINGS_PREFIX + invalidSetting .getKey ()));
390
447
}
448
+ assertThat (
449
+ clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (),
450
+ not (hasItem (invalidSetting .getKey ())));
451
+ assertThat (
452
+ clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
453
+ not (hasItem (invalidSetting .getKey ())));
391
454
}
392
455
393
- // the unknown settings should be archived
456
+ // the unknown settings should be archived and not present in non-archived form
394
457
for (final Setting <String > unknownSetting : unknownSettings ) {
395
458
if (existingPersistentSettings .keys ().contains (unknownSetting .getKey ())) {
396
459
assertThat (
@@ -401,6 +464,12 @@ public void testRemovingArchivedSettingsDoesNotRemoveNonArchivedInvalidOrUnknown
401
464
clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
402
465
hasItem (ARCHIVED_SETTINGS_PREFIX + unknownSetting .getKey ()));
403
466
}
467
+ assertThat (
468
+ clusterStateAfterUpdate .metaData ().persistentSettings ().keySet (),
469
+ not (hasItem (unknownSetting .getKey ())));
470
+ assertThat (
471
+ clusterStateAfterUpdate .metaData ().transientSettings ().keySet (),
472
+ not (hasItem (unknownSetting .getKey ())));
404
473
}
405
474
}
406
475
0 commit comments