Skip to content

Commit 1ca2d47

Browse files
author
Ali Beyad
committed
address code review
1 parent 7579cf2 commit 1ca2d47

File tree

5 files changed

+25
-24
lines changed

5 files changed

+25
-24
lines changed

core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
import java.util.Set;
7171
import java.util.function.Function;
7272

73+
import static org.elasticsearch.cluster.node.DiscoveryNodeFilters.IP_VALIDATOR;
7374
import static org.elasticsearch.cluster.node.DiscoveryNodeFilters.OpType.AND;
7475
import static org.elasticsearch.cluster.node.DiscoveryNodeFilters.OpType.OR;
7576
import static org.elasticsearch.common.settings.Settings.readSettingsFromStream;
@@ -242,11 +243,11 @@ static Setting<Integer> buildNumberOfShardsSetting() {
242243
public static final String INDEX_ROUTING_INCLUDE_GROUP_PREFIX = "index.routing.allocation.include";
243244
public static final String INDEX_ROUTING_EXCLUDE_GROUP_PREFIX = "index.routing.allocation.exclude";
244245
public static final Setting<Settings> INDEX_ROUTING_REQUIRE_GROUP_SETTING =
245-
Setting.groupSetting(INDEX_ROUTING_REQUIRE_GROUP_PREFIX + ".", Property.Dynamic, Property.IndexScope);
246+
Setting.groupSetting(INDEX_ROUTING_REQUIRE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.IndexScope);
246247
public static final Setting<Settings> INDEX_ROUTING_INCLUDE_GROUP_SETTING =
247-
Setting.groupSetting(INDEX_ROUTING_INCLUDE_GROUP_PREFIX + ".", Property.Dynamic, Property.IndexScope);
248+
Setting.groupSetting(INDEX_ROUTING_INCLUDE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.IndexScope);
248249
public static final Setting<Settings> INDEX_ROUTING_EXCLUDE_GROUP_SETTING =
249-
Setting.groupSetting(INDEX_ROUTING_EXCLUDE_GROUP_PREFIX + ".", Property.Dynamic, Property.IndexScope);
250+
Setting.groupSetting(INDEX_ROUTING_EXCLUDE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.IndexScope);
250251
public static final Setting<Settings> INDEX_ROUTING_INITIAL_RECOVERY_GROUP_SETTING =
251252
Setting.groupSetting("index.routing.allocation.initial_recovery."); // this is only setable internally not a registered setting!!
252253

@@ -973,26 +974,20 @@ public IndexMetaData build() {
973974
filledInSyncAllocationIds.put(i, Collections.emptySet());
974975
}
975976
}
976-
final Settings requireGroupSettings = INDEX_ROUTING_REQUIRE_GROUP_SETTING.get(settings);
977-
DiscoveryNodeFilters.IP_VALIDATOR.accept(requireGroupSettings);
978-
final Map<String, String> requireMap = requireGroupSettings.getAsMap();
977+
final Map<String, String> requireMap = INDEX_ROUTING_REQUIRE_GROUP_SETTING.get(settings).getAsMap();
979978
final DiscoveryNodeFilters requireFilters;
980979
if (requireMap.isEmpty()) {
981980
requireFilters = null;
982981
} else {
983982
requireFilters = DiscoveryNodeFilters.buildFromKeyValue(AND, requireMap);
984983
}
985-
final Settings includeGroupSettings = INDEX_ROUTING_INCLUDE_GROUP_SETTING.get(settings);
986-
DiscoveryNodeFilters.IP_VALIDATOR.accept(includeGroupSettings);
987-
Map<String, String> includeMap = includeGroupSettings.getAsMap();
984+
Map<String, String> includeMap = INDEX_ROUTING_INCLUDE_GROUP_SETTING.get(settings).getAsMap();
988985
final DiscoveryNodeFilters includeFilters;
989986
if (includeMap.isEmpty()) {
990987
includeFilters = null;
991988
} else {
992989
includeFilters = DiscoveryNodeFilters.buildFromKeyValue(OR, includeMap);
993990
}
994-
final Settings excludeGroupSettings = INDEX_ROUTING_EXCLUDE_GROUP_SETTING.get(settings);
995-
DiscoveryNodeFilters.IP_VALIDATOR.accept(excludeGroupSettings);
996991
Map<String, String> excludeMap = INDEX_ROUTING_EXCLUDE_GROUP_SETTING.get(settings).getAsMap();
997992
final DiscoveryNodeFilters excludeFilters;
998993
if (excludeMap.isEmpty()) {

core/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeFilters.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ public enum OpType {
3838
OR
3939
}
4040

41+
/**
42+
* Validates the IP addresses in a group of {@link Settings} by looking for the keys
43+
* "_ip", "_host_ip", and "_publish_ip" and ensuring each of their comma separated values
44+
* is a valid IP address.
45+
*/
4146
public static final Consumer<Settings> IP_VALIDATOR = (settings) -> {
4247
Map<String, String> settingsMap = settings.getAsMap();
4348
for (Map.Entry<String, String> entry : settingsMap.entrySet()) {

core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/FilterAllocationDecider.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ public class FilterAllocationDecider extends AllocationDecider {
6969
private static final String CLUSTER_ROUTING_INCLUDE_GROUP_PREFIX = "cluster.routing.allocation.include";
7070
private static final String CLUSTER_ROUTING_EXCLUDE_GROUP_PREFIX = "cluster.routing.allocation.exclude";
7171
public static final Setting<Settings> CLUSTER_ROUTING_REQUIRE_GROUP_SETTING =
72-
Setting.groupSetting(CLUSTER_ROUTING_REQUIRE_GROUP_PREFIX + ".", Property.Dynamic, Property.NodeScope);
72+
Setting.groupSetting(CLUSTER_ROUTING_REQUIRE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.NodeScope);
7373
public static final Setting<Settings> CLUSTER_ROUTING_INCLUDE_GROUP_SETTING =
74-
Setting.groupSetting(CLUSTER_ROUTING_INCLUDE_GROUP_PREFIX + ".", Property.Dynamic, Property.NodeScope);
74+
Setting.groupSetting(CLUSTER_ROUTING_INCLUDE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.NodeScope);
7575
public static final Setting<Settings> CLUSTER_ROUTING_EXCLUDE_GROUP_SETTING =
76-
Setting.groupSetting(CLUSTER_ROUTING_EXCLUDE_GROUP_PREFIX + ".", Property.Dynamic, Property.NodeScope);
76+
Setting.groupSetting(CLUSTER_ROUTING_EXCLUDE_GROUP_PREFIX + ".", IP_VALIDATOR, Property.Dynamic, Property.NodeScope);
7777

7878
private volatile DiscoveryNodeFilters clusterRequireFilters;
7979
private volatile DiscoveryNodeFilters clusterIncludeFilters;
@@ -84,9 +84,9 @@ public FilterAllocationDecider(Settings settings, ClusterSettings clusterSetting
8484
setClusterRequireFilters(CLUSTER_ROUTING_REQUIRE_GROUP_SETTING.get(settings));
8585
setClusterExcludeFilters(CLUSTER_ROUTING_EXCLUDE_GROUP_SETTING.get(settings));
8686
setClusterIncludeFilters(CLUSTER_ROUTING_INCLUDE_GROUP_SETTING.get(settings));
87-
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_REQUIRE_GROUP_SETTING, this::setClusterRequireFilters, IP_VALIDATOR);
88-
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_EXCLUDE_GROUP_SETTING, this::setClusterExcludeFilters, IP_VALIDATOR);
89-
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_INCLUDE_GROUP_SETTING, this::setClusterIncludeFilters, IP_VALIDATOR);
87+
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_REQUIRE_GROUP_SETTING, this::setClusterRequireFilters);
88+
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_EXCLUDE_GROUP_SETTING, this::setClusterExcludeFilters);
89+
clusterSettings.addSettingsUpdateConsumer(CLUSTER_ROUTING_INCLUDE_GROUP_SETTING, this::setClusterIncludeFilters);
9090
}
9191

9292
@Override

core/src/test/java/org/elasticsearch/cluster/allocation/FilteringAllocationIT.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.apache.logging.log4j.Logger;
2323
import org.elasticsearch.cluster.ClusterState;
24-
import org.elasticsearch.cluster.metadata.IndexMetaData;
2524
import org.elasticsearch.cluster.routing.IndexRoutingTable;
2625
import org.elasticsearch.cluster.routing.IndexShardRoutingTable;
2726
import org.elasticsearch.cluster.routing.ShardRouting;
@@ -155,8 +154,7 @@ public void testInvalidIPFilterClusterSettings() {
155154
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> client().admin().cluster().prepareUpdateSettings()
156155
.setTransientSettings(Settings.builder().put(filterSetting.getKey() + ipKey, "192.168.1.1."))
157156
.execute().actionGet());
158-
assertEquals("illegal value can't update [" + filterSetting.getKey() + "] from [{}] to [{" + ipKey + "=192.168.1.1.}]",
159-
e.getMessage());
157+
assertEquals("invalid IP address [192.168.1.1.] for [" + ipKey + "]", e.getMessage());
160158
}
161159
}
162160

core/src/test/java/org/elasticsearch/cluster/routing/allocation/FilterAllocationDeciderTests.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.elasticsearch.cluster.routing.allocation.decider.ReplicaAfterPrimaryActiveAllocationDecider;
3838
import org.elasticsearch.cluster.routing.allocation.decider.SameShardAllocationDecider;
3939
import org.elasticsearch.common.settings.ClusterSettings;
40+
import org.elasticsearch.common.settings.IndexScopedSettings;
4041
import org.elasticsearch.common.settings.Setting;
4142
import org.elasticsearch.common.settings.Settings;
4243
import org.elasticsearch.snapshots.Snapshot;
@@ -197,9 +198,11 @@ public void testInvalidIPFilter() {
197198
String ipKey = randomFrom("_ip", "_host_ip", "_publish_ip");
198199
Setting<Settings> filterSetting = randomFrom(IndexMetaData.INDEX_ROUTING_REQUIRE_GROUP_SETTING,
199200
IndexMetaData.INDEX_ROUTING_INCLUDE_GROUP_SETTING, IndexMetaData.INDEX_ROUTING_EXCLUDE_GROUP_SETTING);
200-
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () ->
201-
IndexMetaData.builder("test").settings(settings(Version.CURRENT).put(filterSetting + ipKey, "192.168.1.1."))
202-
.numberOfShards(1).numberOfReplicas(0).build());
203-
assertEquals("invalid IP address [192.168.1.1.] for [" + ipKey + "]", e.getMessage());
201+
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> {
202+
IndexScopedSettings indexScopedSettings = new IndexScopedSettings(Settings.EMPTY, IndexScopedSettings.BUILT_IN_INDEX_SETTINGS);
203+
indexScopedSettings.updateDynamicSettings(Settings.builder().put(filterSetting.getKey() + ipKey, "192..168.1.1").build(),
204+
Settings.builder().put(Settings.EMPTY), Settings.builder(), "test ip validation");
205+
});
206+
assertEquals("invalid IP address [192..168.1.1] for [" + ipKey + "]", e.getMessage());
204207
}
205208
}

0 commit comments

Comments
 (0)