Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

import org.apache.lucene.index.DocValuesType;
import org.apache.lucene.index.IndexableField;
import org.opensearch.cluster.metadata.IndexMetadata;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.util.FeatureFlags;
import org.opensearch.common.xcontent.XContentFactory;
Expand Down Expand Up @@ -132,6 +133,7 @@ public void testScaledFloatWithStarTree() throws Exception {
protected Settings getIndexSettings() {
return Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(super.getIndexSettings())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.opensearch.action.index.IndexResponse;
import org.opensearch.action.search.SearchResponse;
import org.opensearch.action.support.master.AcknowledgedResponse;
import org.opensearch.cluster.metadata.IndexMetadata;
import org.opensearch.common.Rounding;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.util.FeatureFlags;
Expand Down Expand Up @@ -56,6 +57,7 @@ public class StarTreeMapperIT extends OpenSearchIntegTestCase {
private static final String TEST_INDEX = "test";
Settings settings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.build();

Expand Down Expand Up @@ -756,6 +758,7 @@ public void testValidCompositeIndexWithDuplicateDates() {
public void testCompositeIndexWithIndexNotSpecified() {
Settings settings = Settings.builder()
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();
MapperParsingException ex = expectThrows(
MapperParsingException.class,
Expand All @@ -767,9 +770,25 @@ public void testCompositeIndexWithIndexNotSpecified() {
);
}

public void testAppendOnlyInCompositeIndexNotSpecified() {
Settings settings = Settings.builder()
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.build();
MapperParsingException ex = expectThrows(
MapperParsingException.class,
() -> prepareCreate(TEST_INDEX).setSettings(settings).setMapping(createMinimalTestMapping(false, false, false)).get()
);
assertEquals(
"Failed to parse mapping [_doc]: Set 'index.append_only.enabled' as true as part of index settings to use star tree index",
ex.getMessage()
);
}

public void testCompositeIndexWithHigherTranslogFlushSize() {
Settings settings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(513, ByteSizeUnit.MB))
.build();
IllegalArgumentException ex = expectThrows(
Expand Down Expand Up @@ -1082,6 +1101,7 @@ public void testMaxDimsCompositeIndex() {
Settings.builder()
.put(StarTreeIndexSettings.STAR_TREE_MAX_DIMENSIONS_SETTING.getKey(), 2)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
)
.get()
Expand All @@ -1101,6 +1121,7 @@ public void testMaxMetricsCompositeIndex() {
Settings.builder()
.put(StarTreeIndexSettings.STAR_TREE_MAX_BASE_METRICS_SETTING.getKey(), 4)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
)
.get()
Expand All @@ -1119,6 +1140,7 @@ public void testMaxCalendarIntervalsCompositeIndex() {
Settings.builder()
.put(StarTreeIndexSettings.STAR_TREE_MAX_DATE_INTERVALS_SETTING.getKey(), 1)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
)
.get()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,15 @@
)
);
}
if (IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.get(parserContext.getSettings()) == false) {
throw new IllegalArgumentException(
String.format(

Check warning on line 467 in server/src/main/java/org/opensearch/index/mapper/ObjectMapper.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/org/opensearch/index/mapper/ObjectMapper.java#L466-L467

Added lines #L466 - L467 were not covered by tests
Locale.ROOT,
"Set '%s' as true as part of index settings to use star tree index",
IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey()

Check warning on line 470 in server/src/main/java/org/opensearch/index/mapper/ObjectMapper.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/org/opensearch/index/mapper/ObjectMapper.java#L470

Added line #L470 was not covered by tests
)
);
}
Iterator<Map.Entry<String, Object>> iterator = compositeNode.entrySet().iterator();
if (compositeNode.size() > StarTreeIndexSettings.STAR_TREE_MAX_FIELDS_SETTING.get(parserContext.getSettings())) {
throw new IllegalArgumentException(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ public void testValidSettings() {
Settings requestSettings = Settings.builder()
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "50mb")
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

// This should not throw an exception
MetadataCreateIndexService.validateTranslogFlushIntervalSettingsForCompositeIndex(requestSettings, clusterSettings);
}

public void testDefaultTranslogFlushSetting() {
Settings requestSettings = Settings.builder().put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true).build();
Settings requestSettings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

// This should not throw an exception
IllegalArgumentException ex = expectThrows(
Expand All @@ -61,6 +65,7 @@ public void testNullTranslogFlushSetting() {
Settings requestSettings = Settings.builder()
.putNull(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey())
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

// This should not throw an exception
Expand All @@ -75,6 +80,7 @@ public void testExceedingMaxFlushSize() {
Settings requestSettings = Settings.builder()
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "150mb")
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

IllegalArgumentException ex = expectThrows(
Expand All @@ -88,6 +94,7 @@ public void testEqualToMaxFlushSize() {
Settings requestSettings = Settings.builder()
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "100mb")
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

// This should not throw an exception
Expand All @@ -99,7 +106,10 @@ public void testUpdateIndexThresholdFlushSize() {
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "100mb")
.build();

Settings indexSettings = Settings.builder().put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true).build();
Settings indexSettings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

// This should not throw an exception
assertTrue(
Expand All @@ -116,7 +126,10 @@ public void testUpdateFlushSizeAboveThresholdWithCompositeIndex() {
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "131mb")
.build();

Settings indexSettings = Settings.builder().put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true).build();
Settings indexSettings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();

Optional<String> err = MetadataCreateIndexService.validateTranslogFlushIntervalSettingsForCompositeIndex(
requestSettings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public static MapperService createMapperService(XContentBuilder builder) throws
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.build();
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).putMapping(builder.toString()).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

package org.opensearch.index.mapper;

import org.opensearch.cluster.metadata.IndexMetadata;
import org.opensearch.common.compress.CompressedXContent;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.util.FeatureFlags;
Expand Down Expand Up @@ -542,6 +543,7 @@ public void testCompositeFields() throws Exception {

Settings settings = Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.build();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

package org.opensearch.index.mapper;

import org.opensearch.cluster.metadata.IndexMetadata;
import org.opensearch.common.CheckedConsumer;
import org.opensearch.common.Rounding;
import org.opensearch.common.settings.ClusterSettings;
Expand Down Expand Up @@ -67,6 +68,7 @@ public void teardown() {
protected Settings getIndexSettings() {
return Settings.builder()
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(512, ByteSizeUnit.MB))
.put(SETTINGS)
.build();
Expand Down Expand Up @@ -138,6 +140,7 @@ public void testValidValueForCompositeIndex() {
Settings settings = Settings.builder()
.put(INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "256mb")
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.put(COMPOSITE_INDEX_MAX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), "512mb")
.build();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public void testQueryParsingForMetricAggregations() throws IOException {
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();
CreateIndexRequestBuilder builder = client().admin()
.indices()
Expand Down Expand Up @@ -246,6 +247,7 @@ public void testQueryParsingForDateHistogramAggregations() throws IOException {
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();
CreateIndexRequestBuilder builder = client().admin()
.indices()
Expand Down Expand Up @@ -494,6 +496,7 @@ public void testInvalidQueryParsingForDateHistogramAggregations() throws IOExcep
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)
.put(StarTreeIndexSettings.IS_COMPOSITE_INDEX_SETTING.getKey(), true)
.put(IndexMetadata.INDEX_APPEND_ONLY_ENABLED_SETTING.getKey(), true)
.build();
CreateIndexRequestBuilder builder = client().admin()
.indices()
Expand Down
Loading