1313import org .elasticsearch .features .NodeFeature ;
1414import org .elasticsearch .index .IndexSettings ;
1515
16+ import java .util .HashSet ;
1617import java .util .Set ;
1718
1819/**
@@ -32,52 +33,39 @@ public class MapperFeatures implements FeatureSpecification {
3233 public static final NodeFeature SPARSE_VECTOR_STORE_SUPPORT = new NodeFeature ("mapper.sparse_vector.store_support" );
3334 public static final NodeFeature SORT_FIELDS_CHECK_FOR_NESTED_OBJECT_FIX = new NodeFeature ("mapper.nested.sorting_fields_check_fix" );
3435 public static final NodeFeature DYNAMIC_HANDLING_IN_COPY_TO = new NodeFeature ("mapper.copy_to.dynamic_handling" );
36+
3537 public static final NodeFeature USE_SYNTHETIC_SOURCE_FOR_RECOVERY_BY_DEFAULT = new NodeFeature (
3638 "index.recovery.synthetic_source_default"
3739 );
3840
41+ private static final Set <NodeFeature > DEFAULT_TEST_FEATURES = Set .of (
42+ RangeFieldMapper .DATE_RANGE_INDEXING_FIX ,
43+ IgnoredSourceFieldMapper .DONT_EXPAND_DOTS_IN_IGNORED_SOURCE ,
44+ SourceFieldMapper .REMOVE_SYNTHETIC_SOURCE_ONLY_VALIDATION ,
45+ SourceFieldMapper .SOURCE_MODE_FROM_INDEX_SETTING ,
46+ IgnoredSourceFieldMapper .IGNORED_SOURCE_AS_TOP_LEVEL_METADATA_ARRAY_FIELD ,
47+ IgnoredSourceFieldMapper .ALWAYS_STORE_OBJECT_ARRAYS_IN_NESTED_OBJECTS ,
48+ MapperService .LOGSDB_DEFAULT_IGNORE_DYNAMIC_BEYOND_LIMIT ,
49+ DocumentParser .FIX_PARSING_SUBOBJECTS_FALSE_DYNAMIC_FALSE ,
50+ CONSTANT_KEYWORD_SYNTHETIC_SOURCE_WRITE_FIX ,
51+ META_FETCH_FIELDS_ERROR_CODE_CHANGED ,
52+ SPARSE_VECTOR_STORE_SUPPORT ,
53+ COUNTED_KEYWORD_SYNTHETIC_SOURCE_NATIVE_SUPPORT ,
54+ SORT_FIELDS_CHECK_FOR_NESTED_OBJECT_FIX ,
55+ DYNAMIC_HANDLING_IN_COPY_TO ,
56+ SourceFieldMapper .SYNTHETIC_RECOVERY_SOURCE ,
57+ ObjectMapper .SUBOBJECTS_FALSE_MAPPING_UPDATE_FIX
58+ );
59+
60+ private static final Set <NodeFeature > ADDITIONAL_TEST_FEATURES = Set .of (USE_SYNTHETIC_SOURCE_FOR_RECOVERY_BY_DEFAULT );
61+
3962 @ Override
4063 public Set <NodeFeature > getTestFeatures () {
41- if (IndexSettings .RECOVERY_USE_SYNTHETIC_SOURCE .isEnabled () == false ) {
42- // NOTE: release build node features
43- return Set .of (
44- RangeFieldMapper .DATE_RANGE_INDEXING_FIX ,
45- IgnoredSourceFieldMapper .DONT_EXPAND_DOTS_IN_IGNORED_SOURCE ,
46- SourceFieldMapper .REMOVE_SYNTHETIC_SOURCE_ONLY_VALIDATION ,
47- SourceFieldMapper .SOURCE_MODE_FROM_INDEX_SETTING ,
48- IgnoredSourceFieldMapper .IGNORED_SOURCE_AS_TOP_LEVEL_METADATA_ARRAY_FIELD ,
49- IgnoredSourceFieldMapper .ALWAYS_STORE_OBJECT_ARRAYS_IN_NESTED_OBJECTS ,
50- MapperService .LOGSDB_DEFAULT_IGNORE_DYNAMIC_BEYOND_LIMIT ,
51- DocumentParser .FIX_PARSING_SUBOBJECTS_FALSE_DYNAMIC_FALSE ,
52- CONSTANT_KEYWORD_SYNTHETIC_SOURCE_WRITE_FIX ,
53- META_FETCH_FIELDS_ERROR_CODE_CHANGED ,
54- SPARSE_VECTOR_STORE_SUPPORT ,
55- COUNTED_KEYWORD_SYNTHETIC_SOURCE_NATIVE_SUPPORT ,
56- SORT_FIELDS_CHECK_FOR_NESTED_OBJECT_FIX ,
57- DYNAMIC_HANDLING_IN_COPY_TO ,
58- SourceFieldMapper .SYNTHETIC_RECOVERY_SOURCE ,
59- ObjectMapper .SUBOBJECTS_FALSE_MAPPING_UPDATE_FIX
60- );
64+ if (IndexSettings .RECOVERY_USE_SYNTHETIC_SOURCE .isEnabled ()) {
65+ final Set <NodeFeature > features = new HashSet <>(DEFAULT_TEST_FEATURES );
66+ features .addAll (ADDITIONAL_TEST_FEATURES );
67+ return features ;
6168 }
62- // NOTE: snapshot build node features
63- return Set .of (
64- RangeFieldMapper .DATE_RANGE_INDEXING_FIX ,
65- IgnoredSourceFieldMapper .DONT_EXPAND_DOTS_IN_IGNORED_SOURCE ,
66- SourceFieldMapper .REMOVE_SYNTHETIC_SOURCE_ONLY_VALIDATION ,
67- SourceFieldMapper .SOURCE_MODE_FROM_INDEX_SETTING ,
68- IgnoredSourceFieldMapper .IGNORED_SOURCE_AS_TOP_LEVEL_METADATA_ARRAY_FIELD ,
69- IgnoredSourceFieldMapper .ALWAYS_STORE_OBJECT_ARRAYS_IN_NESTED_OBJECTS ,
70- MapperService .LOGSDB_DEFAULT_IGNORE_DYNAMIC_BEYOND_LIMIT ,
71- DocumentParser .FIX_PARSING_SUBOBJECTS_FALSE_DYNAMIC_FALSE ,
72- CONSTANT_KEYWORD_SYNTHETIC_SOURCE_WRITE_FIX ,
73- META_FETCH_FIELDS_ERROR_CODE_CHANGED ,
74- SPARSE_VECTOR_STORE_SUPPORT ,
75- COUNTED_KEYWORD_SYNTHETIC_SOURCE_NATIVE_SUPPORT ,
76- SORT_FIELDS_CHECK_FOR_NESTED_OBJECT_FIX ,
77- DYNAMIC_HANDLING_IN_COPY_TO ,
78- SourceFieldMapper .SYNTHETIC_RECOVERY_SOURCE ,
79- ObjectMapper .SUBOBJECTS_FALSE_MAPPING_UPDATE_FIX ,
80- USE_SYNTHETIC_SOURCE_FOR_RECOVERY_BY_DEFAULT // NOTE: only for snapshot builds
81- );
69+ return DEFAULT_TEST_FEATURES ;
8270 }
8371}
0 commit comments