Skip to content

Commit d62ad36

Browse files
contains is faster
1 parent 9a0032b commit d62ad36

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.Optional;
3434
import java.util.Set;
3535
import java.util.function.Function;
36-
import java.util.regex.Pattern;
3736

3837
import static org.elasticsearch.xpack.core.DataTier.DATA_FROZEN;
3938

@@ -67,8 +66,6 @@ private static class DataTierValidator implements Setting.Validator<String> {
6766
private static final Collection<Setting<?>> dependencies = List.of(IndexModule.INDEX_STORE_TYPE_SETTING,
6867
SearchableSnapshotsConstants.SNAPSHOT_PARTIAL_SETTING);
6968

70-
private static final Pattern FROZEN_TIER_PATTERN = Pattern.compile("(^|,)" + DATA_FROZEN + "($|,)");
71-
7269
public static String getDefaultTierPreference(Settings settings) {
7370
if (SearchableSnapshotsSettings.isPartialSearchableSnapshotIndex(settings)) {
7471
return DATA_FROZEN;
@@ -91,7 +88,7 @@ public void validate(String value, Map<Setting<?>, Object> settings, boolean exi
9188
"] tier preference may be used for partial searchable snapshots (got: [" + value + "])");
9289
}
9390
} else {
94-
if (FROZEN_TIER_PATTERN.matcher(value).find()) {
91+
if (value.contains(DATA_FROZEN)) {
9592
throw new IllegalArgumentException("[" + DATA_FROZEN + "] tier can only be used for partial searchable snapshots");
9693
}
9794
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ public class DataTier {
3939

4040
public static final Set<String> ALL_DATA_TIERS = Set.of(DATA_CONTENT, DATA_HOT, DATA_WARM, DATA_COLD, DATA_FROZEN);
4141

42+
static {
43+
for (String tier : ALL_DATA_TIERS) {
44+
assert tier.equals(DATA_FROZEN) || tier.contains(DATA_FROZEN) == false
45+
: "can't have two tier names containing [" + DATA_FROZEN + "] because it would break setting validation optimizations" +
46+
" in the data tier allocation decider";
47+
}
48+
}
49+
4250
// Represents an ordered list of data tiers from frozen to hot (or slow to fast)
4351
private static final List<String> ORDERED_FROZEN_TO_HOT_TIERS =
4452
List.of(DataTier.DATA_FROZEN, DataTier.DATA_COLD, DataTier.DATA_WARM, DataTier.DATA_HOT);

0 commit comments

Comments
 (0)