Skip to content

Commit c8b4f0c

Browse files
authored
Remove index setting when override value is null (#122267) (#122346)
(cherry picked from commit 2b9d7f6)
1 parent e08212a commit c8b4f0c

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/CreateIndexFromSourceActionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public void testSettingsNullOverride() throws Exception {
208208
assertTrue(destSettings.getAsBoolean(IndexMetadata.SETTING_BLOCKS_READ, false));
209209

210210
// override null removed
211-
assertNull(destSettings.get(IndexMetadata.SETTING_BLOCKS_WRITE));
211+
assertThat(destSettings.keySet(), not(hasItem(IndexMetadata.SETTING_BLOCKS_WRITE)));
212212
}
213213

214214
public void testRemoveIndexBlocksByDefault() throws Exception {

x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/CreateIndexFromSourceTransportAction.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,12 @@ protected void doExecute(Task task, CreateIndexFromSourceAction.Request request,
8989

9090
Settings.Builder settings = Settings.builder()
9191
// first settings from source index
92-
.put(filterSettings(sourceIndex))
93-
// then override with request settings
94-
.put(request.settingsOverride());
92+
.put(filterSettings(sourceIndex));
93+
94+
if (request.settingsOverride().isEmpty() == false) {
95+
applyOverrides(settings, request.settingsOverride());
96+
}
97+
9598
if (request.removeIndexBlocks()) {
9699
// lastly, override with settings to remove index blocks if requested
97100
INDEX_BLOCK_SETTINGS.forEach(settings::remove);
@@ -114,6 +117,16 @@ protected void doExecute(Task task, CreateIndexFromSourceAction.Request request,
114117
client.admin().indices().create(createIndexRequest, listener.map(response -> response));
115118
}
116119

120+
private void applyOverrides(Settings.Builder settings, Settings overrides) {
121+
overrides.keySet().forEach(key -> {
122+
if (overrides.get(key) != null) {
123+
settings.put(key, overrides.get(key));
124+
} else {
125+
settings.remove(key);
126+
}
127+
});
128+
}
129+
117130
private static Map<String, Object> toMap(@Nullable MappingMetadata sourceMapping) {
118131
return Optional.ofNullable(sourceMapping)
119132
.map(MappingMetadata::source)

0 commit comments

Comments
 (0)