Skip to content

Commit 9bab290

Browse files
committed
Make default value for _tier_preference be "data_frozen" for frozen SBIs
1 parent f2dd315 commit 9bab290

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/cluster/routing/allocation/DataTierAllocationDecider.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.Map;
3333
import java.util.Optional;
3434
import java.util.Set;
35+
import java.util.function.Function;
3536
import java.util.stream.Collectors;
3637

3738
import static org.elasticsearch.xpack.core.DataTier.DATA_FROZEN;
@@ -66,8 +67,8 @@ public class DataTierAllocationDecider extends AllocationDecider {
6667
VALIDATOR, Setting.Property.Dynamic, Setting.Property.IndexScope);
6768
public static final Setting<String> INDEX_ROUTING_EXCLUDE_SETTING = Setting.simpleString(INDEX_ROUTING_EXCLUDE,
6869
VALIDATOR, Setting.Property.Dynamic, Setting.Property.IndexScope);
69-
public static final Setting<String> INDEX_ROUTING_PREFER_SETTING = Setting.simpleString(INDEX_ROUTING_PREFER,
70-
VALIDATOR, Setting.Property.Dynamic, Setting.Property.IndexScope);
70+
public static final Setting<String> INDEX_ROUTING_PREFER_SETTING = new Setting<>(new Setting.SimpleKey(INDEX_ROUTING_PREFER),
71+
DataTierValidator::getDefaultTierPreference, Function.identity(), VALIDATOR, Setting.Property.Dynamic, Setting.Property.IndexScope);
7172

7273
private static void validateTierSetting(String setting) {
7374
if (Strings.hasText(setting)) {
@@ -84,6 +85,14 @@ private static class DataTierValidator implements Setting.Validator<String> {
8485
private static final Collection<Setting<?>> dependencies = List.of(IndexModule.INDEX_STORE_TYPE_SETTING,
8586
SearchableSnapshotsConstants.SNAPSHOT_PARTIAL_SETTING);
8687

88+
public static String getDefaultTierPreference(Settings settings) {
89+
if (SearchableSnapshotsConstants.isPartialSearchableSnapshotIndex(settings)) {
90+
return DATA_FROZEN;
91+
} else {
92+
return "";
93+
}
94+
}
95+
8796
@Override
8897
public void validate(String value) {
8998
validateTierSetting(value);

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/searchablesnapshots/SearchableSnapshotsConstants.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public static boolean isPartialSearchableSnapshotIndex(Map<Setting<?>, Object> i
4242
&& (boolean) indexSettings.get(SNAPSHOT_PARTIAL_SETTING);
4343
}
4444

45+
public static boolean isPartialSearchableSnapshotIndex(Settings indexSettings) {
46+
return SNAPSHOT_DIRECTORY_FACTORY_KEY.equals(INDEX_STORE_TYPE_SETTING.get(indexSettings))
47+
&& SNAPSHOT_PARTIAL_SETTING.get(indexSettings);
48+
}
49+
4550
public static final String CACHE_FETCH_ASYNC_THREAD_POOL_NAME = "searchable_snapshots_cache_fetch_async";
4651
public static final String CACHE_FETCH_ASYNC_THREAD_POOL_SETTING = "xpack.searchable_snapshots.cache_fetch_async_thread_pool";
4752

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/cluster/routing/allocation/DataTierAllocationDeciderTests.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,6 @@ public void testNonFrozenIllegalForPartialSnapshot() {
752752
Randomness.shuffle(tierList);
753753

754754
String value = Strings.join(tierList, ",");
755-
logger.info("--> value: {}", value);
756755
Settings.Builder builder = Settings.builder().put(DataTierAllocationDecider.INDEX_ROUTING_PREFER, value);
757756
builder.put(IndexModule.INDEX_STORE_TYPE_SETTING.getKey(), SearchableSnapshotsConstants.SNAPSHOT_DIRECTORY_FACTORY_KEY);
758757
builder.put(SearchableSnapshotsConstants.SNAPSHOT_PARTIAL_SETTING.getKey(), true);
@@ -764,6 +763,17 @@ public void testNonFrozenIllegalForPartialSnapshot() {
764763
assertThat(e.getMessage(), containsString("only the [data_frozen] tier preference may be used for partial searchable snapshots"));
765764
}
766765

766+
public void testDefaultValueForPreference() {
767+
assertThat(DataTierAllocationDecider.INDEX_ROUTING_PREFER_SETTING.get(Settings.EMPTY), equalTo(""));
768+
769+
Settings.Builder builder = Settings.builder();
770+
builder.put(IndexModule.INDEX_STORE_TYPE_SETTING.getKey(), SearchableSnapshotsConstants.SNAPSHOT_DIRECTORY_FACTORY_KEY);
771+
builder.put(SearchableSnapshotsConstants.SNAPSHOT_PARTIAL_SETTING.getKey(), true);
772+
773+
Settings settings = builder.build();
774+
assertThat(DataTierAllocationDecider.INDEX_ROUTING_PREFER_SETTING.get(settings), equalTo(DATA_FROZEN));
775+
}
776+
767777
public Setting<String> randomTierSetting() {
768778
//noinspection unchecked
769779
return randomFrom(

0 commit comments

Comments
 (0)