Merge pull request #20046 from masaruh/same_shard_host_setting
Move cluster.routing.allocation.same_shard.host setting to new settings infrastructure
This commit is contained in:
commit
f3cddef61e
|
@ -23,13 +23,14 @@ import org.elasticsearch.cluster.routing.RoutingNode;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.allocation.RoutingAllocation;
|
import org.elasticsearch.cluster.routing.allocation.RoutingAllocation;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
|
import org.elasticsearch.common.settings.Setting;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An allocation decider that prevents multiple instances of the same shard to
|
* An allocation decider that prevents multiple instances of the same shard to
|
||||||
* be allocated on the same <tt>node</tt>.
|
* be allocated on the same <tt>node</tt>.
|
||||||
*
|
*
|
||||||
* The {@value #SAME_HOST_SETTING} setting allows to perform a check to prevent
|
* The {@link #CLUSTER_ROUTING_ALLOCATION_SAME_HOST_SETTING} setting allows to perform a check to prevent
|
||||||
* allocation of multiple instances of the same shard on a single <tt>host</tt>,
|
* allocation of multiple instances of the same shard on a single <tt>host</tt>,
|
||||||
* based on host name and host address. Defaults to `false`, meaning that no
|
* based on host name and host address. Defaults to `false`, meaning that no
|
||||||
* check is performed by default.
|
* check is performed by default.
|
||||||
|
@ -44,14 +45,15 @@ public class SameShardAllocationDecider extends AllocationDecider {
|
||||||
|
|
||||||
public static final String NAME = "same_shard";
|
public static final String NAME = "same_shard";
|
||||||
|
|
||||||
public static final String SAME_HOST_SETTING = "cluster.routing.allocation.same_shard.host";
|
public static final Setting<Boolean> CLUSTER_ROUTING_ALLOCATION_SAME_HOST_SETTING =
|
||||||
|
Setting.boolSetting("cluster.routing.allocation.same_shard.host", false, Setting.Property.NodeScope);
|
||||||
|
|
||||||
private final boolean sameHost;
|
private final boolean sameHost;
|
||||||
|
|
||||||
public SameShardAllocationDecider(Settings settings) {
|
public SameShardAllocationDecider(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
|
|
||||||
this.sameHost = settings.getAsBoolean(SAME_HOST_SETTING, false);
|
this.sameHost = CLUSTER_ROUTING_ALLOCATION_SAME_HOST_SETTING.get(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -39,6 +39,7 @@ import org.elasticsearch.cluster.routing.allocation.decider.ClusterRebalanceAllo
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.ConcurrentRebalanceAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.ConcurrentRebalanceAllocationDecider;
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.FilterAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.FilterAllocationDecider;
|
||||||
|
import org.elasticsearch.cluster.routing.allocation.decider.SameShardAllocationDecider;
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.ShardsLimitAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.ShardsLimitAllocationDecider;
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.SnapshotInProgressAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.SnapshotInProgressAllocationDecider;
|
||||||
import org.elasticsearch.cluster.routing.allocation.decider.ThrottlingAllocationDecider;
|
import org.elasticsearch.cluster.routing.allocation.decider.ThrottlingAllocationDecider;
|
||||||
|
@ -198,6 +199,7 @@ public final class ClusterSettings extends AbstractScopedSettings {
|
||||||
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_DISK_THRESHOLD_ENABLED_SETTING,
|
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_DISK_THRESHOLD_ENABLED_SETTING,
|
||||||
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_INCLUDE_RELOCATIONS_SETTING,
|
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_INCLUDE_RELOCATIONS_SETTING,
|
||||||
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_REROUTE_INTERVAL_SETTING,
|
DiskThresholdSettings.CLUSTER_ROUTING_ALLOCATION_REROUTE_INTERVAL_SETTING,
|
||||||
|
SameShardAllocationDecider.CLUSTER_ROUTING_ALLOCATION_SAME_HOST_SETTING,
|
||||||
InternalClusterInfoService.INTERNAL_CLUSTER_INFO_UPDATE_INTERVAL_SETTING,
|
InternalClusterInfoService.INTERNAL_CLUSTER_INFO_UPDATE_INTERVAL_SETTING,
|
||||||
InternalClusterInfoService.INTERNAL_CLUSTER_INFO_TIMEOUT_SETTING,
|
InternalClusterInfoService.INTERNAL_CLUSTER_INFO_TIMEOUT_SETTING,
|
||||||
SnapshotInProgressAllocationDecider.CLUSTER_ROUTING_ALLOCATION_SNAPSHOT_RELOCATION_ENABLED_SETTING,
|
SnapshotInProgressAllocationDecider.CLUSTER_ROUTING_ALLOCATION_SNAPSHOT_RELOCATION_ENABLED_SETTING,
|
||||||
|
|
|
@ -47,8 +47,8 @@ public class SameShardRoutingTests extends ESAllocationTestCase {
|
||||||
private final ESLogger logger = Loggers.getLogger(SameShardRoutingTests.class);
|
private final ESLogger logger = Loggers.getLogger(SameShardRoutingTests.class);
|
||||||
|
|
||||||
public void testSameHost() {
|
public void testSameHost() {
|
||||||
AllocationService strategy = createAllocationService(Settings.builder()
|
AllocationService strategy = createAllocationService(
|
||||||
.put(SameShardAllocationDecider.SAME_HOST_SETTING, true).build());
|
Settings.builder().put(SameShardAllocationDecider.CLUSTER_ROUTING_ALLOCATION_SAME_HOST_SETTING.getKey(), true).build());
|
||||||
|
|
||||||
MetaData metaData = MetaData.builder()
|
MetaData metaData = MetaData.builder()
|
||||||
.put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(2).numberOfReplicas(1))
|
.put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(2).numberOfReplicas(1))
|
||||||
|
|
Loading…
Reference in New Issue