Use object equality to compare versions in IndexSettings (#18103)
Fixes an issue where updating index metadata on a index from a version that it does not have in its static list of known versions fails.
This commit is contained in:
parent
0a6f40c7f5
commit
98dba262cf
|
@ -382,7 +382,7 @@ public final class IndexSettings {
|
||||||
*/
|
*/
|
||||||
synchronized boolean updateIndexMetaData(IndexMetaData indexMetaData) {
|
synchronized boolean updateIndexMetaData(IndexMetaData indexMetaData) {
|
||||||
final Settings newSettings = indexMetaData.getSettings();
|
final Settings newSettings = indexMetaData.getSettings();
|
||||||
if (Version.indexCreated(newSettings) != version) {
|
if (version.equals(Version.indexCreated(newSettings)) == false) {
|
||||||
throw new IllegalArgumentException("version mismatch on settings update expected: " + version + " but was: " + Version.indexCreated(newSettings));
|
throw new IllegalArgumentException("version mismatch on settings update expected: " + version + " but was: " + Version.indexCreated(newSettings));
|
||||||
}
|
}
|
||||||
final String newUUID = newSettings.get(IndexMetaData.SETTING_INDEX_UUID, IndexMetaData.INDEX_UUID_NA_VALUE);
|
final String newUUID = newSettings.get(IndexMetaData.SETTING_INDEX_UUID, IndexMetaData.INDEX_UUID_NA_VALUE);
|
||||||
|
|
|
@ -110,6 +110,15 @@ public class IndexSettingsTests extends ESTestCase {
|
||||||
assertTrue(ex.getMessage(), ex.getMessage().startsWith("version mismatch on settings update expected: "));
|
assertTrue(ex.getMessage(), ex.getMessage().startsWith("version mismatch on settings update expected: "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use version number that is unknown
|
||||||
|
metaData = newIndexMeta("index", Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED, Version.fromId(999999))
|
||||||
|
.build());
|
||||||
|
settings = new IndexSettings(metaData, Settings.EMPTY);
|
||||||
|
assertEquals(Version.fromId(999999), settings.getIndexVersionCreated());
|
||||||
|
assertEquals("_na_", settings.getUUID());
|
||||||
|
settings.updateIndexMetaData(newIndexMeta("index", Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED,
|
||||||
|
Version.fromId(999999)).put("index.test.setting.int", 42).build()));
|
||||||
|
|
||||||
metaData = newIndexMeta("index", Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT)
|
metaData = newIndexMeta("index", Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT)
|
||||||
.put(IndexMetaData.SETTING_INDEX_UUID, "0xdeadbeef").build());
|
.put(IndexMetaData.SETTING_INDEX_UUID, "0xdeadbeef").build());
|
||||||
settings = new IndexSettings(metaData, Settings.EMPTY);
|
settings = new IndexSettings(metaData, Settings.EMPTY);
|
||||||
|
|
Loading…
Reference in New Issue