Skip to content

Commit 0488b03

Browse files
authored
Re-introduce index.mapper.dynamic setting (#120484)
This change re-introduces the deprecated index.mapper.dynamic setting that was already removed via #113000. With the new read-only support for N-2 indices we can still have this setting in indices created with version 7, so it's better to have the deprecated settings definition around.
1 parent 6db7984 commit 0488b03

File tree

4 files changed

+48
-1
lines changed

4 files changed

+48
-1
lines changed

server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ public final class IndexScopedSettings extends AbstractScopedSettings {
163163
MapperService.INDEX_MAPPING_DEPTH_LIMIT_SETTING,
164164
MapperService.INDEX_MAPPING_DIMENSION_FIELDS_LIMIT_SETTING,
165165
MapperService.INDEX_MAPPING_FIELD_NAME_LENGTH_LIMIT_SETTING,
166+
MapperService.INDEX_MAPPER_DYNAMIC_SETTING,
166167
BitsetFilterCache.INDEX_LOAD_RANDOM_ACCESS_FILTERS_EAGERLY_SETTING,
167168
IndexModule.INDEX_STORE_TYPE_SETTING,
168169
IndexModule.INDEX_STORE_PRE_LOAD_SETTING,

server/src/main/java/org/elasticsearch/common/settings/Setting.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ public enum Property {
151151
* Indicates that this index-level setting was deprecated in {@link Version#V_7_17_0} and is
152152
* forbidden in indices created from {@link Version#V_8_0_0} onwards.
153153
*/
154-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // introduce IndexSettingDeprecatedInV8AndRemovedInV9 to replace this constant
154+
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // introduce IndexSettingDeprecatedInV8AndRemovedInV10
155+
// note we still need v7 settings in v9 because we support reading from N-2 indices now
155156
IndexSettingDeprecatedInV7AndRemovedInV8,
156157

157158
/**

server/src/main/java/org/elasticsearch/index/mapper/MapperService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,17 @@ public boolean isAutoUpdate() {
164164
Property.Dynamic,
165165
Property.IndexScope
166166
);
167+
/**
168+
* Legacy index setting, kept for 7.x BWC compatibility. This setting has no effect in 8.x. Do not use.
169+
*/
170+
@Deprecated
171+
public static final Setting<Boolean> INDEX_MAPPER_DYNAMIC_SETTING = Setting.boolSetting(
172+
"index.mapper.dynamic",
173+
true,
174+
Property.Dynamic,
175+
Property.IndexScope,
176+
Property.IndexSettingDeprecatedInV7AndRemovedInV8
177+
);
167178

168179
private final IndexAnalyzers indexAnalyzers;
169180
private final MappingParser mappingParser;

server/src/test/java/org/elasticsearch/index/IndexSettingsTests.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@
1010
package org.elasticsearch.index;
1111

1212
import org.elasticsearch.cluster.metadata.IndexMetadata;
13+
import org.elasticsearch.cluster.metadata.IndexMetadataVerifier;
1314
import org.elasticsearch.common.settings.AbstractScopedSettings;
1415
import org.elasticsearch.common.settings.IndexScopedSettings;
1516
import org.elasticsearch.common.settings.Setting;
1617
import org.elasticsearch.common.settings.Setting.Property;
1718
import org.elasticsearch.common.settings.Settings;
1819
import org.elasticsearch.common.unit.ByteSizeValue;
1920
import org.elasticsearch.core.TimeValue;
21+
import org.elasticsearch.index.mapper.MapperMetrics;
22+
import org.elasticsearch.index.mapper.MapperRegistry;
2023
import org.elasticsearch.index.translog.Translog;
24+
import org.elasticsearch.plugins.MapperPlugin;
2125
import org.elasticsearch.test.ESTestCase;
2226
import org.elasticsearch.test.index.IndexVersionUtils;
2327
import org.hamcrest.Matchers;
@@ -39,6 +43,7 @@
3943
import static org.elasticsearch.index.IndexSettings.STATELESS_MIN_NON_FAST_REFRESH_INTERVAL;
4044
import static org.elasticsearch.index.IndexSettings.TIME_SERIES_END_TIME;
4145
import static org.elasticsearch.index.IndexSettings.TIME_SERIES_START_TIME;
46+
import static org.elasticsearch.index.mapper.MapperService.INDEX_MAPPER_DYNAMIC_SETTING;
4247
import static org.hamcrest.CoreMatchers.equalTo;
4348
import static org.hamcrest.Matchers.is;
4449
import static org.hamcrest.core.StringContains.containsString;
@@ -839,6 +844,35 @@ public void testTimeSeriesTimeBoundary() {
839844
assertThat(e.getMessage(), Matchers.containsString("index.time_series.end_time must be larger than index.time_series.start_time"));
840845
}
841846

847+
public void testIndexMapperDynamic() {
848+
Settings settings = Settings.builder().put(INDEX_MAPPER_DYNAMIC_SETTING.getKey(), randomBoolean()).build();
849+
850+
INDEX_MAPPER_DYNAMIC_SETTING.get(settings);
851+
assertWarnings(
852+
"[index.mapper.dynamic] setting was deprecated in the previous Elasticsearch release and is removed in this release."
853+
);
854+
855+
IndexMetadata idxMetaData = newIndexMeta("test", settings);
856+
IndexMetadataVerifier indexMetadataVerifier = new IndexMetadataVerifier(
857+
Settings.EMPTY,
858+
null,
859+
xContentRegistry(),
860+
new MapperRegistry(Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), MapperPlugin.NOOP_FIELD_FILTER),
861+
IndexScopedSettings.DEFAULT_SCOPED_SETTINGS,
862+
null,
863+
MapperMetrics.NOOP
864+
);
865+
IndexMetadata verifiedMetaData = indexMetadataVerifier.verifyIndexMetadata(
866+
idxMetaData,
867+
IndexVersions.MINIMUM_COMPATIBLE,
868+
IndexVersions.MINIMUM_READONLY_COMPATIBLE
869+
);
870+
assertEquals(idxMetaData, verifiedMetaData);
871+
assertWarnings(
872+
"[index.mapper.dynamic] setting was deprecated in the previous Elasticsearch release and is removed in this release."
873+
);
874+
}
875+
842876
public void testSame() {
843877
final var indexSettingKey = "index.example.setting";
844878
final var archivedSettingKey = "archived.example.setting";

0 commit comments

Comments
 (0)