diff --git a/core/src/main/java/org/elasticsearch/action/admin/cluster/shards/ClusterSearchShardsGroup.java b/core/src/main/java/org/elasticsearch/action/admin/cluster/shards/ClusterSearchShardsGroup.java index bd824041761..adc9e3c3f2c 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/cluster/shards/ClusterSearchShardsGroup.java +++ b/core/src/main/java/org/elasticsearch/action/admin/cluster/shards/ClusterSearchShardsGroup.java @@ -19,7 +19,6 @@ package org.elasticsearch.action.admin.cluster.shards; -import org.elasticsearch.cluster.routing.ImmutableShardRouting; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -71,7 +70,7 @@ public class ClusterSearchShardsGroup implements Streamable, ToXContent { shardId = in.readVInt(); shards = new ShardRouting[in.readVInt()]; for (int i = 0; i < shards.length; i++) { - shards[i] = ImmutableShardRouting.readShardRoutingEntry(in, index, shardId); + shards[i] = ShardRouting.readShardRoutingEntry(in, index, shardId); } } diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/segments/ShardSegments.java b/core/src/main/java/org/elasticsearch/action/admin/indices/segments/ShardSegments.java index d33df00fc8c..6e754a26210 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/segments/ShardSegments.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/segments/ShardSegments.java @@ -31,7 +31,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import static org.elasticsearch.cluster.routing.ImmutableShardRouting.readShardRoutingEntry; +import static org.elasticsearch.cluster.routing.ShardRouting.readShardRoutingEntry; public class ShardSegments extends BroadcastShardResponse implements Iterable { diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/stats/ShardStats.java b/core/src/main/java/org/elasticsearch/action/admin/indices/stats/ShardStats.java index fbba68cbee9..5f4dd98ddec 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/stats/ShardStats.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/stats/ShardStats.java @@ -32,7 +32,7 @@ import org.elasticsearch.index.shard.IndexShard; import java.io.IOException; -import static org.elasticsearch.cluster.routing.ImmutableShardRouting.readShardRoutingEntry; +import static org.elasticsearch.cluster.routing.ShardRouting.readShardRoutingEntry; /** */ diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/ShardUpgradeStatus.java b/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/ShardUpgradeStatus.java index e5f0261932c..1f4aa897bfa 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/ShardUpgradeStatus.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/ShardUpgradeStatus.java @@ -26,7 +26,7 @@ import org.elasticsearch.common.io.stream.StreamOutput; import java.io.IOException; -import static org.elasticsearch.cluster.routing.ImmutableShardRouting.readShardRoutingEntry; +import static org.elasticsearch.cluster.routing.ShardRouting.readShardRoutingEntry; public class ShardUpgradeStatus extends BroadcastShardResponse { diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/TransportUpgradeStatusAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/TransportUpgradeStatusAction.java index 370dce6e41f..d167ac4090e 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/TransportUpgradeStatusAction.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/upgrade/get/TransportUpgradeStatusAction.java @@ -42,7 +42,6 @@ import org.elasticsearch.indices.IndicesService; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.TransportService; -import java.io.IOException; import java.util.List; import java.util.concurrent.atomic.AtomicReferenceArray; diff --git a/core/src/main/java/org/elasticsearch/action/fieldstats/TransportFieldStatsTransportAction.java b/core/src/main/java/org/elasticsearch/action/fieldstats/TransportFieldStatsTransportAction.java index d0fb90f455c..0b64f62dec3 100644 --- a/core/src/main/java/org/elasticsearch/action/fieldstats/TransportFieldStatsTransportAction.java +++ b/core/src/main/java/org/elasticsearch/action/fieldstats/TransportFieldStatsTransportAction.java @@ -38,7 +38,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.engine.Engine; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.shard.IndexShard; diff --git a/core/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java b/core/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java index 77386088709..89fb8301c3c 100644 --- a/core/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java +++ b/core/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java @@ -43,7 +43,6 @@ import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.routing.*; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.collect.Tuple; -import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.lease.Releasable; import org.elasticsearch.common.lease.Releasables; import org.elasticsearch.common.settings.Settings; diff --git a/core/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java b/core/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java index 01ff8213c4c..80420e325eb 100644 --- a/core/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java +++ b/core/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java @@ -45,7 +45,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingQueue; -import static org.elasticsearch.cluster.routing.ImmutableShardRouting.readShardRoutingEntry; +import static org.elasticsearch.cluster.routing.ShardRouting.readShardRoutingEntry; /** * diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/ImmutableShardRouting.java b/core/src/main/java/org/elasticsearch/cluster/routing/ImmutableShardRouting.java deleted file mode 100644 index 73683b572b7..00000000000 --- a/core/src/main/java/org/elasticsearch/cluster/routing/ImmutableShardRouting.java +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.cluster.routing; - -import com.google.common.collect.ImmutableList; -import org.elasticsearch.Version; -import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.io.stream.Streamable; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.shard.ShardId; - -import java.io.IOException; -import java.io.Serializable; - -/** - * {@link ImmutableShardRouting} immutably encapsulates information about shard - * routings like id, state, version, etc. - */ -public class ImmutableShardRouting implements Streamable, Serializable, ShardRouting { - - protected String index; - - protected int shardId; - - protected String currentNodeId; - - protected String relocatingNodeId; - - protected boolean primary; - - protected ShardRoutingState state; - - protected long version; - - private transient ShardId shardIdentifier; - - protected RestoreSource restoreSource; - - protected UnassignedInfo unassignedInfo; - - private final transient ImmutableList asList; - - ImmutableShardRouting() { - this.asList = ImmutableList.of((ShardRouting) this); - } - - public ImmutableShardRouting(ShardRouting copy) { - this(copy, copy.version()); - } - - public ImmutableShardRouting(ShardRouting copy, long version) { - this(copy.index(), copy.id(), copy.currentNodeId(), copy.relocatingNodeId(), copy.restoreSource(), copy.primary(), copy.state(), version, copy.unassignedInfo()); - } - - public ImmutableShardRouting(String index, int shardId, String currentNodeId, boolean primary, ShardRoutingState state, long version) { - this(index, shardId, currentNodeId, null, primary, state, version); - } - - public ImmutableShardRouting(String index, int shardId, String currentNodeId, - String relocatingNodeId, boolean primary, ShardRoutingState state, long version) { - this(index, shardId, currentNodeId, relocatingNodeId, null, primary, state, version); - } - - public ImmutableShardRouting(String index, int shardId, String currentNodeId, - String relocatingNodeId, RestoreSource restoreSource, boolean primary, ShardRoutingState state, long version) { - this(index, shardId, currentNodeId, relocatingNodeId, restoreSource, primary, state, version, null); - } - - public ImmutableShardRouting(String index, int shardId, String currentNodeId, - String relocatingNodeId, RestoreSource restoreSource, boolean primary, ShardRoutingState state, long version, - UnassignedInfo unassignedInfo) { - this.index = index; - this.shardId = shardId; - this.currentNodeId = currentNodeId; - this.relocatingNodeId = relocatingNodeId; - this.primary = primary; - this.state = state; - this.asList = ImmutableList.of((ShardRouting) this); - this.version = version; - this.restoreSource = restoreSource; - this.unassignedInfo = unassignedInfo; - assert !(state == ShardRoutingState.UNASSIGNED && unassignedInfo == null) : "unassigned shard must be created with meta"; - } - - @Override - public String index() { - return this.index; - } - - @Override - public String getIndex() { - return index(); - } - - @Override - public int id() { - return this.shardId; - } - - @Override - public int getId() { - return id(); - } - - @Override - public long version() { - return this.version; - } - - @Override - public boolean unassigned() { - return state == ShardRoutingState.UNASSIGNED; - } - - @Override - public boolean initializing() { - return state == ShardRoutingState.INITIALIZING; - } - - @Override - public boolean active() { - return started() || relocating(); - } - - @Override - public boolean started() { - return state == ShardRoutingState.STARTED; - } - - @Override - public boolean relocating() { - return state == ShardRoutingState.RELOCATING; - } - - @Override - public boolean assignedToNode() { - return currentNodeId != null; - } - - @Override - public String currentNodeId() { - return this.currentNodeId; - } - - @Override - public String relocatingNodeId() { - return this.relocatingNodeId; - } - - @Override - public ShardRouting targetRoutingIfRelocating() { - if (!relocating()) { - return null; - } - return new ImmutableShardRouting(index, shardId, relocatingNodeId, currentNodeId, primary, ShardRoutingState.INITIALIZING, version); - } - - @Override - public RestoreSource restoreSource() { - return restoreSource; - } - - @Override - @Nullable - public UnassignedInfo unassignedInfo() { - return unassignedInfo; - } - - @Override - public boolean primary() { - return this.primary; - } - - @Override - public ShardRoutingState state() { - return this.state; - } - - @Override - public ShardId shardId() { - if (shardIdentifier != null) { - return shardIdentifier; - } - shardIdentifier = new ShardId(index, shardId); - return shardIdentifier; - } - - @Override - public ShardIterator shardsIt() { - return new PlainShardIterator(shardId(), asList); - } - - public static ImmutableShardRouting readShardRoutingEntry(StreamInput in) throws IOException { - ImmutableShardRouting entry = new ImmutableShardRouting(); - entry.readFrom(in); - return entry; - } - - public static ImmutableShardRouting readShardRoutingEntry(StreamInput in, String index, int shardId) throws IOException { - ImmutableShardRouting entry = new ImmutableShardRouting(); - entry.readFrom(in, index, shardId); - return entry; - } - - public void readFrom(StreamInput in, String index, int shardId) throws IOException { - this.index = index; - this.shardId = shardId; - readFromThin(in); - } - - @Override - public void readFromThin(StreamInput in) throws IOException { - version = in.readLong(); - if (in.readBoolean()) { - currentNodeId = in.readString(); - } - - if (in.readBoolean()) { - relocatingNodeId = in.readString(); - } - - primary = in.readBoolean(); - state = ShardRoutingState.fromValue(in.readByte()); - - restoreSource = RestoreSource.readOptionalRestoreSource(in); - if (in.readBoolean()) { - unassignedInfo = new UnassignedInfo(in); - } - } - - @Override - public void readFrom(StreamInput in) throws IOException { - readFrom(in, in.readString(), in.readVInt()); - } - - /** - * Writes shard information to {@link StreamOutput} without writing index name and shard id - * - * @param out {@link StreamOutput} to write shard information to - * @throws IOException if something happens during write - */ - @Override - public void writeToThin(StreamOutput out) throws IOException { - out.writeLong(version); - if (currentNodeId != null) { - out.writeBoolean(true); - out.writeString(currentNodeId); - } else { - out.writeBoolean(false); - } - - if (relocatingNodeId != null) { - out.writeBoolean(true); - out.writeString(relocatingNodeId); - } else { - out.writeBoolean(false); - } - - out.writeBoolean(primary); - out.writeByte(state.value()); - - if (restoreSource != null) { - out.writeBoolean(true); - restoreSource.writeTo(out); - } else { - out.writeBoolean(false); - } - if (unassignedInfo != null) { - out.writeBoolean(true); - unassignedInfo.writeTo(out); - } else { - out.writeBoolean(false); - } - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeString(index); - out.writeVInt(shardId); - writeToThin(out); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - // we check on instanceof so we also handle the MutableShardRouting case as well - if (o == null || !(o instanceof ImmutableShardRouting)) { - return false; - } - - ImmutableShardRouting that = (ImmutableShardRouting) o; - - if (primary != that.primary) { - return false; - } - if (shardId != that.shardId) { - return false; - } - if (currentNodeId != null ? !currentNodeId.equals(that.currentNodeId) : that.currentNodeId != null) { - return false; - } - if (index != null ? !index.equals(that.index) : that.index != null) { - return false; - } - if (relocatingNodeId != null ? !relocatingNodeId.equals(that.relocatingNodeId) : that.relocatingNodeId != null) { - return false; - } - if (state != that.state) { - return false; - } - if (restoreSource != null ? !restoreSource.equals(that.restoreSource) : that.restoreSource != null) { - return false; - } - return true; - } - - @Override - public int hashCode() { - int result = index != null ? index.hashCode() : 0; - result = 31 * result + shardId; - result = 31 * result + (currentNodeId != null ? currentNodeId.hashCode() : 0); - result = 31 * result + (relocatingNodeId != null ? relocatingNodeId.hashCode() : 0); - result = 31 * result + (primary ? 1 : 0); - result = 31 * result + (state != null ? state.hashCode() : 0); - result = 31 * result + (restoreSource != null ? restoreSource.hashCode() : 0); - return result; - } - - @Override - public String toString() { - return shortSummary(); - } - - @Override - public String shortSummary() { - StringBuilder sb = new StringBuilder(); - sb.append('[').append(index).append(']').append('[').append(shardId).append(']'); - sb.append(", node[").append(currentNodeId).append("], "); - if (relocatingNodeId != null) { - sb.append("relocating [").append(relocatingNodeId).append("], "); - } - if (primary) { - sb.append("[P]"); - } else { - sb.append("[R]"); - } - if (this.restoreSource != null) { - sb.append(", restoring[" + restoreSource + "]"); - } - sb.append(", s[").append(state).append("]"); - if (this.unassignedInfo != null) { - sb.append(", ").append(unassignedInfo.toString()); - } - return sb.toString(); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject() - .field("state", state()) - .field("primary", primary()) - .field("node", currentNodeId()) - .field("relocating_node", relocatingNodeId()) - .field("shard", shardId().id()) - .field("index", shardId().index().name()); - if (restoreSource() != null) { - builder.field("restore_source"); - restoreSource().toXContent(builder, params); - } - if (unassignedInfo != null) { - unassignedInfo.toXContent(builder, params); - } - return builder.endObject(); - } -} diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/IndexRoutingTable.java b/core/src/main/java/org/elasticsearch/cluster/routing/IndexRoutingTable.java index 3e10808d845..a53f60eecd5 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/IndexRoutingTable.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/IndexRoutingTable.java @@ -70,24 +70,21 @@ public class IndexRoutingTable extends AbstractDiffable imple // shards with state set to UNASSIGNED private final ImmutableOpenIntMap shards; - private final ImmutableList allShards; - private final ImmutableList allActiveShards; + private final List allActiveShards; IndexRoutingTable(String index, ImmutableOpenIntMap shards) { this.index = index; this.shuffler = new RotationShardShuffler(ThreadLocalRandom.current().nextInt()); this.shards = shards; - ImmutableList.Builder allShards = ImmutableList.builder(); ImmutableList.Builder allActiveShards = ImmutableList.builder(); for (IntObjectCursor cursor : shards) { for (ShardRouting shardRouting : cursor.value) { - allShards.add(shardRouting); + shardRouting.freeze(); if (shardRouting.active()) { allActiveShards.add(shardRouting); } } } - this.allShards = allShards.build(); this.allActiveShards = allActiveShards.build(); } @@ -275,13 +272,6 @@ public class IndexRoutingTable extends AbstractDiffable imple return shards; } - /** - * Returns an unordered iterator over all shards (including replicas). - */ - public ShardsIterator randomAllShardsIt() { - return new PlainShardsIterator(shuffler.shuffle(allShards)); - } - /** * Returns an unordered iterator over all active shards (including replicas). */ @@ -443,9 +433,9 @@ public class IndexRoutingTable extends AbstractDiffable imple for (int i = 0; i <= indexMetaData.numberOfReplicas(); i++) { if (asNew && ignoreShards.contains(shardId)) { // This shards wasn't completely snapshotted - restore it as new shard - indexShardRoutingBuilder.addShard(new ImmutableShardRouting(index, shardId, null, null, null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); + indexShardRoutingBuilder.addShard(new ShardRouting(index, shardId, null, null, null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); } else { - indexShardRoutingBuilder.addShard(new ImmutableShardRouting(index, shardId, null, null, i == 0 ? restoreSource : null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); + indexShardRoutingBuilder.addShard(new ShardRouting(index, shardId, null, null, i == 0 ? restoreSource : null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); } } shards.put(shardId, indexShardRoutingBuilder.build()); @@ -463,7 +453,7 @@ public class IndexRoutingTable extends AbstractDiffable imple for (int shardId = 0; shardId < indexMetaData.numberOfShards(); shardId++) { IndexShardRoutingTable.Builder indexShardRoutingBuilder = new IndexShardRoutingTable.Builder(new ShardId(indexMetaData.index(), shardId), asNew ? false : true); for (int i = 0; i <= indexMetaData.numberOfReplicas(); i++) { - indexShardRoutingBuilder.addShard(new ImmutableShardRouting(index, shardId, null, null, null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); + indexShardRoutingBuilder.addShard(new ShardRouting(index, shardId, null, null, null, i == 0, ShardRoutingState.UNASSIGNED, 0, unassignedInfo)); } shards.put(shardId, indexShardRoutingBuilder.build()); } @@ -474,7 +464,7 @@ public class IndexRoutingTable extends AbstractDiffable imple for (IntCursor cursor : shards.keys()) { int shardId = cursor.value; // version 0, will get updated when reroute will happen - ImmutableShardRouting shard = new ImmutableShardRouting(index, shardId, null, null, null, false, ShardRoutingState.UNASSIGNED, 0, new UnassignedInfo(UnassignedInfo.Reason.REPLICA_ADDED, null)); + ShardRouting shard = new ShardRouting(index, shardId, null, null, null, false, ShardRoutingState.UNASSIGNED, 0, new UnassignedInfo(UnassignedInfo.Reason.REPLICA_ADDED, null)); shards.put(shardId, new IndexShardRoutingTable.Builder(shards.get(shard.id())).addShard(shard).build() ); @@ -493,7 +483,7 @@ public class IndexRoutingTable extends AbstractDiffable imple // re-add all the current ones IndexShardRoutingTable.Builder builder = new IndexShardRoutingTable.Builder(indexShard.shardId(), indexShard.primaryAllocatedPostApi()); for (ShardRouting shardRouting : indexShard) { - builder.addShard(new ImmutableShardRouting(shardRouting)); + builder.addShard(new ShardRouting(shardRouting)); } // first check if there is one that is not assigned to a node, and remove it boolean removed = false; @@ -540,9 +530,9 @@ public class IndexRoutingTable extends AbstractDiffable imple public Builder addShard(IndexShardRoutingTable refData, ShardRouting shard) { IndexShardRoutingTable indexShard = shards.get(shard.id()); if (indexShard == null) { - indexShard = new IndexShardRoutingTable.Builder(refData.shardId(), refData.primaryAllocatedPostApi()).addShard(new ImmutableShardRouting(shard)).build(); + indexShard = new IndexShardRoutingTable.Builder(refData.shardId(), refData.primaryAllocatedPostApi()).addShard(new ShardRouting(shard)).build(); } else { - indexShard = new IndexShardRoutingTable.Builder(indexShard).addShard(new ImmutableShardRouting(shard)).build(); + indexShard = new IndexShardRoutingTable.Builder(indexShard).addShard(new ShardRouting(shard)).build(); } shards.put(indexShard.shardId().id(), indexShard); return this; diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/IndexShardRoutingTable.java b/core/src/main/java/org/elasticsearch/cluster/routing/IndexShardRoutingTable.java index 3400827f8c0..b8a192cce9f 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/IndexShardRoutingTable.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/IndexShardRoutingTable.java @@ -22,7 +22,6 @@ package org.elasticsearch.cluster.routing; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; -import com.google.common.collect.UnmodifiableIterator; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.common.collect.MapBuilder; @@ -141,7 +140,7 @@ public class IndexShardRoutingTable implements Iterable { if (shards.get(i).version() == highestVersion) { shardRoutings.add(shards.get(i)); } else { - shardRoutings.add(new ImmutableShardRouting(shards.get(i), highestVersion)); + shardRoutings.add(new ShardRouting(shards.get(i), highestVersion)); } } return new IndexShardRoutingTable(shardId, ImmutableList.copyOf(shardRoutings), primaryAllocatedPostApi); @@ -559,7 +558,7 @@ public class IndexShardRoutingTable implements Iterable { this.primaryAllocatedPostApi = primaryAllocatedPostApi; } - public Builder addShard(ImmutableShardRouting shardEntry) { + public Builder addShard(ShardRouting shardEntry) { for (ShardRouting shard : shards) { // don't add two that map to the same node id // we rely on the fact that a node does not have primary and backup of the same shard @@ -601,7 +600,7 @@ public class IndexShardRoutingTable implements Iterable { int size = in.readVInt(); for (int i = 0; i < size; i++) { - ImmutableShardRouting shard = ImmutableShardRouting.readShardRoutingEntry(in, index, iShardId); + ShardRouting shard = ShardRouting.readShardRoutingEntry(in, index, iShardId); builder.addShard(shard); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/MutableShardRouting.java b/core/src/main/java/org/elasticsearch/cluster/routing/MutableShardRouting.java deleted file mode 100644 index e9b3ac0a831..00000000000 --- a/core/src/main/java/org/elasticsearch/cluster/routing/MutableShardRouting.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.cluster.routing; - -/** - * Similar to {@link ImmutableShardRouting} this class keeps metadata of the current shard. But unlike - * {@link ImmutableShardRouting} the information kept in this class can be modified. - * These modifications include changing the primary state, relocating and assigning the shard - * represented by this class - */ -public class MutableShardRouting extends ImmutableShardRouting { - - public MutableShardRouting(ShardRouting copy) { - super(copy); - } - - public MutableShardRouting(ShardRouting copy, long version) { - super(copy, version); - } - - public MutableShardRouting(String index, int shardId, String currentNodeId, - String relocatingNodeId, RestoreSource restoreSource, boolean primary, ShardRoutingState state, long version) { - super(index, shardId, currentNodeId, relocatingNodeId, restoreSource, primary, state, version); - assert state != ShardRoutingState.UNASSIGNED : "new mutable routing should not be created with UNASSIGNED state, should moveToUnassigned"; - } - - /** - * Moves the shard to unassigned state. - */ - void moveToUnassigned(UnassignedInfo unassignedInfo) { - version++; - assert state != ShardRoutingState.UNASSIGNED; - state = ShardRoutingState.UNASSIGNED; - currentNodeId = null; - relocatingNodeId = null; - this.unassignedInfo = unassignedInfo; - } - - /** - * Assign this shard to a node. - * - * @param nodeId id of the node to assign this shard to - */ - void assignToNode(String nodeId) { - version++; - - if (currentNodeId == null) { - assert state == ShardRoutingState.UNASSIGNED; - - state = ShardRoutingState.INITIALIZING; - currentNodeId = nodeId; - relocatingNodeId = null; - } else if (state == ShardRoutingState.STARTED) { - state = ShardRoutingState.RELOCATING; - relocatingNodeId = nodeId; - } else if (state == ShardRoutingState.RELOCATING) { - assert nodeId.equals(relocatingNodeId); - } - } - - /** - * Relocate the shard to another node. - * - * @param relocatingNodeId id of the node to relocate the shard - */ - void relocate(String relocatingNodeId) { - version++; - assert state == ShardRoutingState.STARTED; - state = ShardRoutingState.RELOCATING; - this.relocatingNodeId = relocatingNodeId; - } - - /** - * Cancel relocation of a shard. The shards state must be set - * to RELOCATING. - */ - void cancelRelocation() { - version++; - assert state == ShardRoutingState.RELOCATING; - assert assignedToNode(); - assert relocatingNodeId != null; - - state = ShardRoutingState.STARTED; - relocatingNodeId = null; - } - - /** - * Moves the shard from started to initializing and bumps the version - */ - void reinitializeShard() { - assert state == ShardRoutingState.STARTED; - version++; - state = ShardRoutingState.INITIALIZING; - } - - /** - * Set the shards state to STARTED. The shards state must be - * INITIALIZING or RELOCATING. Any relocation will be - * canceled. - */ - void moveToStarted() { - version++; - assert state == ShardRoutingState.INITIALIZING || state == ShardRoutingState.RELOCATING; - relocatingNodeId = null; - restoreSource = null; - state = ShardRoutingState.STARTED; - unassignedInfo = null; // we keep the unassigned data until the shard is started - } - - /** - * Make the shard primary unless it's not Primary - * //TODO: doc exception - */ - void moveToPrimary() { - version++; - if (primary) { - throw new IllegalShardRoutingStateException(this, "Already primary, can't move to primary"); - } - primary = true; - } - - /** - * Set the primary shard to non-primary - */ - void moveFromPrimary() { - version++; - if (!primary) { - throw new IllegalShardRoutingStateException(this, "Not primary, can't move to replica"); - } - primary = false; - } - - private long hashVersion = version-1; - private int hashCode = 0; - - @Override - public int hashCode() { - hashCode = (hashVersion != version ? super.hashCode() : hashCode); - hashVersion = version; - return hashCode; - } -} - diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNode.java b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNode.java index deb25938f19..77b8f1b588a 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNode.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNode.java @@ -33,30 +33,30 @@ import static com.google.common.collect.Lists.newArrayList; * A {@link RoutingNode} represents a cluster node associated with a single {@link DiscoveryNode} including all shards * that are hosted on that nodes. Each {@link RoutingNode} has a unique node id that can be used to identify the node. */ -public class RoutingNode implements Iterable { +public class RoutingNode implements Iterable { private final String nodeId; private final DiscoveryNode node; - private final List shards; + private final List shards; public RoutingNode(String nodeId, DiscoveryNode node) { - this(nodeId, node, new ArrayList()); + this(nodeId, node, new ArrayList()); } - public RoutingNode(String nodeId, DiscoveryNode node, List shards) { + public RoutingNode(String nodeId, DiscoveryNode node, List shards) { this.nodeId = nodeId; this.node = node; this.shards = shards; } @Override - public Iterator iterator() { + public Iterator iterator() { return Iterators.unmodifiableIterator(shards.iterator()); } - Iterator mutableIterator() { + Iterator mutableIterator() { return shards.iterator(); } @@ -85,9 +85,9 @@ public class RoutingNode implements Iterable { * Add a new shard to this node * @param shard Shard to crate on this Node */ - void add(MutableShardRouting shard) { + void add(ShardRouting shard) { // TODO use Set with ShardIds for faster lookup. - for (MutableShardRouting shardRouting : shards) { + for (ShardRouting shardRouting : shards) { if (shardRouting.shardId().equals(shard.shardId())) { throw new IllegalStateException("Trying to add a shard [" + shard.shardId().index().name() + "][" + shard.shardId().id() + "] to a node [" + nodeId + "] where it already exists"); } @@ -102,7 +102,7 @@ public class RoutingNode implements Iterable { */ public int numberOfShardsWithState(ShardRoutingState... states) { int count = 0; - for (MutableShardRouting shardEntry : this) { + for (ShardRouting shardEntry : this) { for (ShardRoutingState state : states) { if (shardEntry.state() == state) { count++; @@ -117,9 +117,9 @@ public class RoutingNode implements Iterable { * @param states set of states which should be listed * @return List of shards */ - public List shardsWithState(ShardRoutingState... states) { - List shards = newArrayList(); - for (MutableShardRouting shardEntry : this) { + public List shardsWithState(ShardRoutingState... states) { + List shards = newArrayList(); + for (ShardRouting shardEntry : this) { for (ShardRoutingState state : states) { if (shardEntry.state() == state) { shards.add(shardEntry); @@ -135,10 +135,10 @@ public class RoutingNode implements Iterable { * @param states set of states which should be listed * @return a list of shards */ - public List shardsWithState(String index, ShardRoutingState... states) { - List shards = newArrayList(); + public List shardsWithState(String index, ShardRoutingState... states) { + List shards = newArrayList(); - for (MutableShardRouting shardEntry : this) { + for (ShardRouting shardEntry : this) { if (!shardEntry.index().equals(index)) { continue; } @@ -156,7 +156,7 @@ public class RoutingNode implements Iterable { */ public int numberOfOwningShards() { int count = 0; - for (MutableShardRouting shardEntry : this) { + for (ShardRouting shardEntry : this) { if (shardEntry.state() != ShardRoutingState.RELOCATING) { count++; } @@ -168,7 +168,7 @@ public class RoutingNode implements Iterable { public String prettyPrint() { StringBuilder sb = new StringBuilder(); sb.append("-----node_id[").append(nodeId).append("][" + (node == null ? "X" : "V") + "]\n"); - for (MutableShardRouting entry : shards) { + for (ShardRouting entry : shards) { sb.append("--------").append(entry.shortSummary()).append('\n'); } return sb.toString(); @@ -190,11 +190,11 @@ public class RoutingNode implements Iterable { return sb.toString(); } - public MutableShardRouting get(int i) { + public ShardRouting get(int i) { return shards.get(i) ; } - public Collection copyShards() { + public Collection copyShards() { return new ArrayList<>(shards); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNodes.java b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNodes.java index 14c46b2f1d3..899e2633eba 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNodes.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingNodes.java @@ -53,9 +53,9 @@ public class RoutingNodes implements Iterable { private final UnassignedShards unassignedShards = new UnassignedShards(); - private final List ignoredUnassignedShards = newArrayList(); + private final List ignoredUnassignedShards = newArrayList(); - private final Map> assignedShards = newHashMap(); + private final Map> assignedShards = newHashMap(); private final ImmutableOpenMap customs; @@ -75,10 +75,10 @@ public class RoutingNodes implements Iterable { this.routingTable = clusterState.routingTable(); this.customs = clusterState.customs(); - Map> nodesToShards = newHashMap(); + Map> nodesToShards = newHashMap(); // fill in the nodeToShards with the "live" nodes for (ObjectCursor cursor : clusterState.nodes().dataNodes().values()) { - nodesToShards.put(cursor.value.id(), new ArrayList()); + nodesToShards.put(cursor.value.id(), new ArrayList()); } // fill in the inverse of node -> shards allocated @@ -91,12 +91,12 @@ public class RoutingNodes implements Iterable { // by the ShardId, as this is common for primary and replicas. // A replica Set might have one (and not more) replicas with the state of RELOCATING. if (shard.assignedToNode()) { - List entries = nodesToShards.get(shard.currentNodeId()); + List entries = nodesToShards.get(shard.currentNodeId()); if (entries == null) { entries = newArrayList(); nodesToShards.put(shard.currentNodeId(), entries); } - MutableShardRouting sr = new MutableShardRouting(shard); + ShardRouting sr = new ShardRouting(shard); entries.add(sr); assignedShardsAdd(sr); if (shard.relocating()) { @@ -108,7 +108,7 @@ public class RoutingNodes implements Iterable { } // add the counterpart shard with relocatingNodeId reflecting the source from which // it's relocating from. - sr = new MutableShardRouting(shard.index(), shard.id(), shard.relocatingNodeId(), + sr = new ShardRouting(shard.index(), shard.id(), shard.relocatingNodeId(), shard.currentNodeId(), shard.restoreSource(), shard.primary(), ShardRoutingState.INITIALIZING, shard.version()); entries.add(sr); assignedShardsAdd(sr); @@ -119,14 +119,14 @@ public class RoutingNodes implements Iterable { inactiveShardCount++; } } else { - MutableShardRouting sr = new MutableShardRouting(shard); + ShardRouting sr = new ShardRouting(shard); assignedShardsAdd(sr); unassignedShards.add(sr); } } } } - for (Map.Entry> entry : nodesToShards.entrySet()) { + for (Map.Entry> entry : nodesToShards.entrySet()) { String nodeId = entry.getKey(); this.nodesToShards.put(nodeId, new RoutingNode(nodeId, clusterState.nodes().get(nodeId), entry.getValue())); } @@ -185,7 +185,7 @@ public class RoutingNodes implements Iterable { return !unassignedShards.isEmpty(); } - public List ignoredUnassigned() { + public List ignoredUnassigned() { return this.ignoredUnassignedShards; } @@ -258,8 +258,8 @@ public class RoutingNodes implements Iterable { * Returns the active primary shard for the given ShardRouting or null if * no primary is found or the primary is not active. */ - public MutableShardRouting activePrimary(ShardRouting shard) { - for (MutableShardRouting shardRouting : assignedShards(shard.shardId())) { + public ShardRouting activePrimary(ShardRouting shard) { + for (ShardRouting shardRouting : assignedShards(shard.shardId())) { if (shardRouting.primary() && shardRouting.active()) { return shardRouting; } @@ -271,8 +271,8 @@ public class RoutingNodes implements Iterable { * Returns one active replica shard for the given ShardRouting shard ID or null if * no active replica is found. */ - public MutableShardRouting activeReplica(ShardRouting shard) { - for (MutableShardRouting shardRouting : assignedShards(shard.shardId())) { + public ShardRouting activeReplica(ShardRouting shard) { + for (ShardRouting shardRouting : assignedShards(shard.shardId())) { if (!shardRouting.primary() && shardRouting.active()) { return shardRouting; } @@ -284,7 +284,7 @@ public class RoutingNodes implements Iterable { * Returns all shards that are not in the state UNASSIGNED with the same shard * ID as the given shard. */ - public Iterable assignedShards(ShardRouting shard) { + public Iterable assignedShards(ShardRouting shard) { return assignedShards(shard.shardId()); } @@ -292,11 +292,11 @@ public class RoutingNodes implements Iterable { * Returns true iff all replicas are active for the given shard routing. Otherwise false */ public boolean allReplicasActive(ShardRouting shardRouting) { - final List shards = assignedShards(shardRouting.shardId()); + final List shards = assignedShards(shardRouting.shardId()); if (shards.isEmpty() || shards.size() < this.routingTable.index(shardRouting.index()).shard(shardRouting.id()).size()) { return false; // if we are empty nothing is active if we have less than total at least one is unassigned } - for (MutableShardRouting shard : shards) { + for (ShardRouting shard : shards) { if (!shard.active()) { return false; } @@ -304,10 +304,10 @@ public class RoutingNodes implements Iterable { return true; } - public List shards(Predicate predicate) { - List shards = newArrayList(); + public List shards(Predicate predicate) { + List shards = newArrayList(); for (RoutingNode routingNode : this) { - for (MutableShardRouting shardRouting : routingNode) { + for (ShardRouting shardRouting : routingNode) { if (predicate.apply(shardRouting)) { shards.add(shardRouting); } @@ -316,9 +316,9 @@ public class RoutingNodes implements Iterable { return shards; } - public List shardsWithState(ShardRoutingState... state) { + public List shardsWithState(ShardRoutingState... state) { // TODO these are used on tests only - move into utils class - List shards = newArrayList(); + List shards = newArrayList(); for (RoutingNode routingNode : this) { shards.addAll(routingNode.shardsWithState(state)); } @@ -331,15 +331,15 @@ public class RoutingNodes implements Iterable { return shards; } - public List shardsWithState(String index, ShardRoutingState... state) { + public List shardsWithState(String index, ShardRoutingState... state) { // TODO these are used on tests only - move into utils class - List shards = newArrayList(); + List shards = newArrayList(); for (RoutingNode routingNode : this) { shards.addAll(routingNode.shardsWithState(index, state)); } for (ShardRoutingState s : state) { if (s == ShardRoutingState.UNASSIGNED) { - for (MutableShardRouting unassignedShard : unassignedShards) { + for (ShardRouting unassignedShard : unassignedShards) { if (unassignedShard.index().equals(index)) { shards.add(unassignedShard); } @@ -356,7 +356,7 @@ public class RoutingNodes implements Iterable { sb.append(routingNode.prettyPrint()); } sb.append("---- unassigned\n"); - for (MutableShardRouting shardEntry : unassignedShards) { + for (ShardRouting shardEntry : unassignedShards) { sb.append("--------").append(shardEntry.shortSummary()).append('\n'); } return sb.toString(); @@ -379,7 +379,7 @@ public class RoutingNodes implements Iterable { * @param shard the shard to be assigned * @param nodeId the nodeId this shard should initialize on or relocate from */ - public void assign(MutableShardRouting shard, String nodeId) { + public void assign(ShardRouting shard, String nodeId) { // state will not change if the shard is already initializing. ShardRoutingState oldState = shard.state(); shard.assignToNode(nodeId); @@ -400,7 +400,7 @@ public class RoutingNodes implements Iterable { /** * Relocate a shard to another node. */ - public void relocate(MutableShardRouting shard, String nodeId) { + public void relocate(ShardRouting shard, String nodeId) { relocatingShards++; shard.relocate(nodeId); } @@ -408,7 +408,7 @@ public class RoutingNodes implements Iterable { /** * Mark a shard as started and adjusts internal statistics. */ - public void started(MutableShardRouting shard) { + public void started(ShardRouting shard) { if (!shard.active() && shard.relocatingNodeId() == null) { inactiveShardCount--; if (shard.primary()) { @@ -424,7 +424,7 @@ public class RoutingNodes implements Iterable { /** * Cancels a relocation of a shard that shard must relocating. */ - public void cancelRelocation(MutableShardRouting shard) { + public void cancelRelocation(ShardRouting shard) { relocatingShards--; shard.cancelRelocation(); } @@ -434,8 +434,8 @@ public class RoutingNodes implements Iterable { * * @param shards the shard to have its primary status swapped. */ - public void swapPrimaryFlag(MutableShardRouting... shards) { - for (MutableShardRouting shard : shards) { + public void swapPrimaryFlag(ShardRouting... shards) { + for (ShardRouting shard : shards) { if (shard.primary()) { shard.moveFromPrimary(); if (shard.unassigned()) { @@ -450,10 +450,10 @@ public class RoutingNodes implements Iterable { } } - private static final List EMPTY = Collections.emptyList(); + private static final List EMPTY = Collections.emptyList(); - private List assignedShards(ShardId shardId) { - final List replicaSet = assignedShards.get(shardId); + private List assignedShards(ShardId shardId) { + final List replicaSet = assignedShards.get(shardId); return replicaSet == null ? EMPTY : Collections.unmodifiableList(replicaSet); } @@ -462,7 +462,7 @@ public class RoutingNodes implements Iterable { * the relocation if the shard is relocating. * @param shard */ - private void remove(MutableShardRouting shard) { + private void remove(ShardRouting shard) { if (!shard.active() && shard.relocatingNodeId() == null) { inactiveShardCount--; assert inactiveShardCount >= 0; @@ -475,12 +475,12 @@ public class RoutingNodes implements Iterable { assignedShardsRemove(shard); } - private void assignedShardsAdd(MutableShardRouting shard) { + private void assignedShardsAdd(ShardRouting shard) { if (shard.unassigned()) { // no unassigned return; } - List shards = assignedShards.get(shard.shardId()); + List shards = assignedShards.get(shard.shardId()); if (shards == null) { shards = Lists.newArrayList(); assignedShards.put(shard.shardId(), shards); @@ -489,17 +489,17 @@ public class RoutingNodes implements Iterable { shards.add(shard); } - private boolean assertInstanceNotInList(MutableShardRouting shard, List shards) { - for (MutableShardRouting s : shards) { + private boolean assertInstanceNotInList(ShardRouting shard, List shards) { + for (ShardRouting s : shards) { assert s != shard; } return true; } - private void assignedShardsRemove(MutableShardRouting shard) { - final List replicaSet = assignedShards.get(shard.shardId()); + private void assignedShardsRemove(ShardRouting shard) { + final List replicaSet = assignedShards.get(shard.shardId()); if (replicaSet != null) { - final Iterator iterator = replicaSet.iterator(); + final Iterator iterator = replicaSet.iterator(); while(iterator.hasNext()) { // yes we check identity here if (shard == iterator.next()) { @@ -532,7 +532,7 @@ public class RoutingNodes implements Iterable { return nodesToShards.values().toArray(new RoutingNode[nodesToShards.size()]); } - public void reinitShadowPrimary(MutableShardRouting candidate) { + public void reinitShadowPrimary(ShardRouting candidate) { if (candidate.relocating()) { cancelRelocation(candidate); } @@ -542,9 +542,9 @@ public class RoutingNodes implements Iterable { } - public final static class UnassignedShards implements Iterable { + public final static class UnassignedShards implements Iterable { - private final List unassigned; + private final List unassigned; private int primaries = 0; private long transactionId = 0; @@ -564,16 +564,16 @@ public class RoutingNodes implements Iterable { sourceTransactionId = -1; } - public void add(MutableShardRouting mutableShardRouting) { - if(mutableShardRouting.primary()) { + public void add(ShardRouting shardRouting) { + if(shardRouting.primary()) { primaries++; } - unassigned.add(mutableShardRouting); + unassigned.add(shardRouting); transactionId++; } - public void addAll(Collection mutableShardRoutings) { - for (MutableShardRouting r : mutableShardRoutings) { + public void addAll(Collection mutableShardRoutings) { + for (ShardRouting r : mutableShardRoutings) { add(r); } } @@ -587,17 +587,17 @@ public class RoutingNodes implements Iterable { } @Override - public Iterator iterator() { - final Iterator iterator = unassigned.iterator(); - return new Iterator() { - private MutableShardRouting current; + public Iterator iterator() { + final Iterator iterator = unassigned.iterator(); + return new Iterator() { + private ShardRouting current; @Override public boolean hasNext() { return iterator.hasNext(); } @Override - public MutableShardRouting next() { + public ShardRouting next() { return current = iterator.next(); } @@ -639,8 +639,8 @@ public class RoutingNodes implements Iterable { return new UnassignedShards(this); } - public MutableShardRouting[] drain() { - MutableShardRouting[] mutableShardRoutings = unassigned.toArray(new MutableShardRouting[unassigned.size()]); + public ShardRouting[] drain() { + ShardRouting[] mutableShardRoutings = unassigned.toArray(new ShardRouting[unassigned.size()]); unassigned.clear(); primaries = 0; transactionId++; @@ -650,7 +650,7 @@ public class RoutingNodes implements Iterable { /** - * Calculates RoutingNodes statistics by iterating over all {@link MutableShardRouting}s + * Calculates RoutingNodes statistics by iterating over all {@link ShardRouting}s * in the cluster to ensure the book-keeping is correct. * For performance reasons, this should only be called from asserts * @@ -670,7 +670,7 @@ public class RoutingNodes implements Iterable { final Set seenShards = newHashSet(); Map indicesAndShards = new HashMap<>(); for (RoutingNode node : routingNodes) { - for (MutableShardRouting shard : node) { + for (ShardRouting shard : node) { if (!shard.active() && shard.relocatingNodeId() == null) { if (!shard.relocating()) { inactiveShardCount++; @@ -692,20 +692,20 @@ public class RoutingNodes implements Iterable { } // Assert that the active shard routing are identical. Set> entries = indicesAndShards.entrySet(); - final List shards = newArrayList(); + final List shards = newArrayList(); for (Map.Entry e : entries) { String index = e.getKey(); for (int i = 0; i < e.getValue(); i++) { for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting shardRouting : routingNode) { + for (ShardRouting shardRouting : routingNode) { if (shardRouting.index().equals(index) && shardRouting.id() == i) { shards.add(shardRouting); } } } - List mutableShardRoutings = routingNodes.assignedShards(new ShardId(index, i)); + List mutableShardRoutings = routingNodes.assignedShards(new ShardId(index, i)); assert mutableShardRoutings.size() == shards.size(); - for (MutableShardRouting r : mutableShardRoutings) { + for (ShardRouting r : mutableShardRoutings) { assert shards.contains(r); shards.remove(r); } @@ -713,7 +713,7 @@ public class RoutingNodes implements Iterable { } } - for (MutableShardRouting shard : routingNodes.unassigned()) { + for (ShardRouting shard : routingNodes.unassigned()) { if (shard.primary()) { unassignedPrimaryCount++; } @@ -731,7 +731,7 @@ public class RoutingNodes implements Iterable { } - public class RoutingNodesIterator implements Iterator, Iterable { + public class RoutingNodesIterator implements Iterator, Iterable { private RoutingNode current; private final Iterator delegate; @@ -759,15 +759,15 @@ public class RoutingNodes implements Iterable { } @Override - public Iterator iterator() { + public Iterator iterator() { return nodeShards(); } } - public final class RoutingNodeIterator implements Iterator, Iterable { + public final class RoutingNodeIterator implements Iterator, Iterable { private final RoutingNode iterable; - private MutableShardRouting shard; - private final Iterator delegate; + private ShardRouting shard; + private final Iterator delegate; public RoutingNodeIterator(RoutingNode iterable) { this.delegate = iterable.mutableIterator(); @@ -780,7 +780,7 @@ public class RoutingNodes implements Iterable { } @Override - public MutableShardRouting next() { + public ShardRouting next() { return shard = delegate.next(); } @@ -791,13 +791,13 @@ public class RoutingNodes implements Iterable { } @Override - public Iterator iterator() { + public Iterator iterator() { return iterable.iterator(); } public void moveToUnassigned(UnassignedInfo unassignedInfo) { remove(); - MutableShardRouting unassigned = new MutableShardRouting(shard); // protective copy of the mutable shard + ShardRouting unassigned = new ShardRouting(shard); // protective copy of the mutable shard unassigned.moveToUnassigned(unassignedInfo); unassigned().add(unassigned); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingTable.java b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingTable.java index 51c5402228d..a06d61c367c 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/RoutingTable.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/RoutingTable.java @@ -346,7 +346,7 @@ public class RoutingTable implements Iterable, Diffable indexRoutingTableBuilders = newHashMap(); for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting shardRoutingEntry : routingNode) { + for (ShardRouting shardRoutingEntry : routingNode) { // every relocating shard has a double entry, ignore the target one. if (shardRoutingEntry.state() == ShardRoutingState.INITIALIZING && shardRoutingEntry.relocatingNodeId() != null) continue; @@ -362,7 +362,7 @@ public class RoutingTable implements Iterable, Diffable asList; + + private boolean frozen = false; + + ShardRouting() { + this.asList = Arrays.asList(this); + } + + public ShardRouting(ShardRouting copy) { + this(copy, copy.version()); + } + + public ShardRouting(ShardRouting copy, long version) { + this(copy.index(), copy.id(), copy.currentNodeId(), copy.relocatingNodeId(), copy.restoreSource(), copy.primary(), copy.state(), version, copy.unassignedInfo()); + } + + public ShardRouting(String index, int shardId, String currentNodeId, boolean primary, ShardRoutingState state, long version) { + this(index, shardId, currentNodeId, null, primary, state, version); + } + + public ShardRouting(String index, int shardId, String currentNodeId, + String relocatingNodeId, boolean primary, ShardRoutingState state, long version) { + this(index, shardId, currentNodeId, relocatingNodeId, null, primary, state, version); + } + + public ShardRouting(String index, int shardId, String currentNodeId, + String relocatingNodeId, RestoreSource restoreSource, boolean primary, ShardRoutingState state, long version) { + this(index, shardId, currentNodeId, relocatingNodeId, restoreSource, primary, state, version, null); + } + + public ShardRouting(String index, int shardId, String currentNodeId, + String relocatingNodeId, RestoreSource restoreSource, boolean primary, ShardRoutingState state, long version, + UnassignedInfo unassignedInfo) { + this.index = index; + this.shardId = shardId; + this.currentNodeId = currentNodeId; + this.relocatingNodeId = relocatingNodeId; + this.primary = primary; + this.state = state; + this.asList = Arrays.asList(this); + this.version = version; + this.restoreSource = restoreSource; + this.unassignedInfo = unassignedInfo; + assert !(state == ShardRoutingState.UNASSIGNED && unassignedInfo == null) : "unassigned shard must be created with meta"; + } /** * The index name. */ - String index(); + public String index() { + return this.index; + } /** * The index name. */ - String getIndex(); + public String getIndex() { + return index(); + } /** * The shard id. */ - int id(); + public int id() { + return this.shardId; + } /** * The shard id. */ - int getId(); + public int getId() { + return id(); + } + /** * The routing version associated with the shard. */ - long version(); - - /** - * The shard state. - */ - ShardRoutingState state(); + public long version() { + return this.version; + } /** * The shard is unassigned (not allocated to any node). */ - boolean unassigned(); + public boolean unassigned() { + return state == ShardRoutingState.UNASSIGNED; + } /** * The shard is initializing (usually recovering either from peer shard * or from gateway). */ - boolean initializing(); - - /** - * The shard is in started mode. - */ - boolean started(); - - /** - * Returns true iff the this shard is currently relocating to - * another node. Otherwise false - * - * @see ShardRoutingState#RELOCATING - */ - boolean relocating(); + public boolean initializing() { + return state == ShardRoutingState.INITIALIZING; + } /** * Returns true iff the this shard is currently @@ -98,61 +162,427 @@ public interface ShardRouting extends Streamable, Serializable, ToXContent { * {@link ShardRoutingState#RELOCATING relocating} to another node. * Otherwise false */ - boolean active(); + public boolean active() { + return started() || relocating(); + } + + /** + * The shard is in started mode. + */ + public boolean started() { + return state == ShardRoutingState.STARTED; + } + + /** + * Returns true iff the this shard is currently relocating to + * another node. Otherwise false + * + * @see ShardRoutingState#RELOCATING + */ + public boolean relocating() { + return state == ShardRoutingState.RELOCATING; + } /** * Returns true iff this shard is assigned to a node ie. not * {@link ShardRoutingState#UNASSIGNED unassigned}. Otherwise false */ - boolean assignedToNode(); + public boolean assignedToNode() { + return currentNodeId != null; + } /** * The current node id the shard is allocated on. */ - String currentNodeId(); + public String currentNodeId() { + return this.currentNodeId; + } /** * The relocating node id the shard is either relocating to or relocating from. */ - String relocatingNodeId(); + public String relocatingNodeId() { + return this.relocatingNodeId; + } /** * If the shard is relocating, return a shard routing representing the target shard or null o.w. * The target shard routing will be the INITIALIZING state and have relocatingNodeId set to the * source node. */ - ShardRouting targetRoutingIfRelocating(); + public ShardRouting targetRoutingIfRelocating() { + if (!relocating()) { + return null; + } + return new ShardRouting(index, shardId, relocatingNodeId, currentNodeId, primary, ShardRoutingState.INITIALIZING, version); + } /** * Snapshot id and repository where this shard is being restored from */ - RestoreSource restoreSource(); + public RestoreSource restoreSource() { + return restoreSource; + } /** * Additional metadata on why the shard is/was unassigned. The metadata is kept around * until the shard moves to STARTED. */ - UnassignedInfo unassignedInfo(); + @Nullable + public UnassignedInfo unassignedInfo() { + return unassignedInfo; + } /** * Returns true iff this shard is a primary. */ - boolean primary(); + public boolean primary() { + return this.primary; + } /** - * A short description of the shard. + * The shard state. */ - String shortSummary(); + public ShardRoutingState state() { + return this.state; + } + + /** + * The shard id. + */ + public ShardId shardId() { + if (shardIdentifier != null) { + return shardIdentifier; + } + shardIdentifier = new ShardId(index, shardId); + return shardIdentifier; + } /** * A shard iterator with just this shard in it. */ - ShardIterator shardsIt(); + public ShardIterator shardsIt() { + return new PlainShardIterator(shardId(), asList); + } + + public static ShardRouting readShardRoutingEntry(StreamInput in) throws IOException { + ShardRouting entry = new ShardRouting(); + entry.readFrom(in); + return entry; + } + + public static ShardRouting readShardRoutingEntry(StreamInput in, String index, int shardId) throws IOException { + ShardRouting entry = new ShardRouting(); + entry.readFrom(in, index, shardId); + return entry; + } + + public void readFrom(StreamInput in, String index, int shardId) throws IOException { + this.index = index; + this.shardId = shardId; + readFromThin(in); + } + + public void readFromThin(StreamInput in) throws IOException { + version = in.readLong(); + if (in.readBoolean()) { + currentNodeId = in.readString(); + } + + if (in.readBoolean()) { + relocatingNodeId = in.readString(); + } + + primary = in.readBoolean(); + state = ShardRoutingState.fromValue(in.readByte()); + + restoreSource = RestoreSource.readOptionalRestoreSource(in); + if (in.readBoolean()) { + unassignedInfo = new UnassignedInfo(in); + } + freeze(); + } + + @Override + public void readFrom(StreamInput in) throws IOException { + readFrom(in, in.readString(), in.readVInt()); + } /** - * Does not write index name and shard id + * Writes shard information to {@link StreamOutput} without writing index name and shard id + * + * @param out {@link StreamOutput} to write shard information to + * @throws IOException if something happens during write */ - void writeToThin(StreamOutput out) throws IOException; + public void writeToThin(StreamOutput out) throws IOException { + out.writeLong(version); + if (currentNodeId != null) { + out.writeBoolean(true); + out.writeString(currentNodeId); + } else { + out.writeBoolean(false); + } - void readFromThin(StreamInput in) throws ClassNotFoundException, IOException; + if (relocatingNodeId != null) { + out.writeBoolean(true); + out.writeString(relocatingNodeId); + } else { + out.writeBoolean(false); + } + + out.writeBoolean(primary); + out.writeByte(state.value()); + + if (restoreSource != null) { + out.writeBoolean(true); + restoreSource.writeTo(out); + } else { + out.writeBoolean(false); + } + if (unassignedInfo != null) { + out.writeBoolean(true); + unassignedInfo.writeTo(out); + } else { + out.writeBoolean(false); + } + } + + @Override + public void writeTo(StreamOutput out) throws IOException { + out.writeString(index); + out.writeVInt(shardId); + writeToThin(out); + } + + + // package private mutators start here + + /** + * Moves the shard to unassigned state. + */ + void moveToUnassigned(UnassignedInfo unassignedInfo) { + ensureNotFrozen(); + version++; + assert state != ShardRoutingState.UNASSIGNED; + state = ShardRoutingState.UNASSIGNED; + currentNodeId = null; + relocatingNodeId = null; + this.unassignedInfo = unassignedInfo; + } + + /** + * Assign this shard to a node. + * + * @param nodeId id of the node to assign this shard to + */ + void assignToNode(String nodeId) { + ensureNotFrozen(); + version++; + if (currentNodeId == null) { + assert state == ShardRoutingState.UNASSIGNED; + + state = ShardRoutingState.INITIALIZING; + currentNodeId = nodeId; + relocatingNodeId = null; + } else if (state == ShardRoutingState.STARTED) { + state = ShardRoutingState.RELOCATING; + relocatingNodeId = nodeId; + } else if (state == ShardRoutingState.RELOCATING) { + assert nodeId.equals(relocatingNodeId); + } + } + + /** + * Relocate the shard to another node. + * + * @param relocatingNodeId id of the node to relocate the shard + */ + void relocate(String relocatingNodeId) { + ensureNotFrozen(); + version++; + assert state == ShardRoutingState.STARTED; + state = ShardRoutingState.RELOCATING; + this.relocatingNodeId = relocatingNodeId; + } + + /** + * Cancel relocation of a shard. The shards state must be set + * to RELOCATING. + */ + void cancelRelocation() { + ensureNotFrozen(); + version++; + assert state == ShardRoutingState.RELOCATING; + assert assignedToNode(); + assert relocatingNodeId != null; + + state = ShardRoutingState.STARTED; + relocatingNodeId = null; + } + + /** + * Moves the shard from started to initializing and bumps the version + */ + void reinitializeShard() { + ensureNotFrozen(); + assert state == ShardRoutingState.STARTED; + version++; + state = ShardRoutingState.INITIALIZING; + } + + /** + * Set the shards state to STARTED. The shards state must be + * INITIALIZING or RELOCATING. Any relocation will be + * canceled. + */ + void moveToStarted() { + ensureNotFrozen(); + version++; + assert state == ShardRoutingState.INITIALIZING || state == ShardRoutingState.RELOCATING; + relocatingNodeId = null; + restoreSource = null; + state = ShardRoutingState.STARTED; + unassignedInfo = null; // we keep the unassigned data until the shard is started + } + + /** + * Make the shard primary unless it's not Primary + * //TODO: doc exception + */ + void moveToPrimary() { + ensureNotFrozen(); + version++; + if (primary) { + throw new IllegalShardRoutingStateException(this, "Already primary, can't move to primary"); + } + primary = true; + } + + /** + * Set the primary shard to non-primary + */ + void moveFromPrimary() { + ensureNotFrozen(); + version++; + if (!primary) { + throw new IllegalShardRoutingStateException(this, "Not primary, can't move to replica"); + } + primary = false; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + // we check on instanceof so we also handle the ImmutableShardRouting case as well + if (o == null || !(o instanceof ShardRouting)) { + return false; + } + ShardRouting that = (ShardRouting) o; + + if (primary != that.primary) { + return false; + } + if (shardId != that.shardId) { + return false; + } + if (currentNodeId != null ? !currentNodeId.equals(that.currentNodeId) : that.currentNodeId != null) { + return false; + } + if (index != null ? !index.equals(that.index) : that.index != null) { + return false; + } + if (relocatingNodeId != null ? !relocatingNodeId.equals(that.relocatingNodeId) : that.relocatingNodeId != null) { + return false; + } + if (state != that.state) { + return false; + } + if (restoreSource != null ? !restoreSource.equals(that.restoreSource) : that.restoreSource != null) { + return false; + } + return true; + } + + private long hashVersion = version-1; + private int hashCode = 0; + + @Override + public int hashCode() { + if (hashVersion == version) { + return hashCode; + } + int result = index != null ? index.hashCode() : 0; + result = 31 * result + shardId; + result = 31 * result + (currentNodeId != null ? currentNodeId.hashCode() : 0); + result = 31 * result + (relocatingNodeId != null ? relocatingNodeId.hashCode() : 0); + result = 31 * result + (primary ? 1 : 0); + result = 31 * result + (state != null ? state.hashCode() : 0); + result = 31 * result + (restoreSource != null ? restoreSource.hashCode() : 0); + return hashCode = result; + } + + @Override + public String toString() { + return shortSummary(); + } + + /** + * A short description of the shard. + */ + public String shortSummary() { + StringBuilder sb = new StringBuilder(); + sb.append('[').append(index).append(']').append('[').append(shardId).append(']'); + sb.append(", node[").append(currentNodeId).append("], "); + if (relocatingNodeId != null) { + sb.append("relocating [").append(relocatingNodeId).append("], "); + } + if (primary) { + sb.append("[P]"); + } else { + sb.append("[R]"); + } + if (this.restoreSource != null) { + sb.append(", restoring[" + restoreSource + "]"); + } + sb.append(", s[").append(state).append("]"); + if (this.unassignedInfo != null) { + sb.append(", ").append(unassignedInfo.toString()); + } + return sb.toString(); + } + + @Override + public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { + builder.startObject() + .field("state", state()) + .field("primary", primary()) + .field("node", currentNodeId()) + .field("relocating_node", relocatingNodeId()) + .field("shard", shardId().id()) + .field("index", shardId().index().name()); + if (restoreSource() != null) { + builder.field("restore_source"); + restoreSource().toXContent(builder, params); + } + if (unassignedInfo != null) { + unassignedInfo.toXContent(builder, params); + } + return builder.endObject(); + } + + private void ensureNotFrozen() { + if (frozen) { + throw new IllegalStateException("ShardRouting can't be modified anymore - already frozen"); + } + } + + void freeze() { + frozen = true; + } + + boolean isFrozen() { + return frozen; + } } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationService.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationService.java index 62abf683821..70717a21d44 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationService.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationService.java @@ -194,7 +194,7 @@ public class AllocationService extends AbstractComponent { boolean changed = false; // create a copy of the shards interleaving between nodes, and check if they can remain - List shards = new ArrayList<>(); + List shards = new ArrayList<>(); int index = 0; boolean found = true; final RoutingNodes routingNodes = allocation.routingNodes(); @@ -210,7 +210,7 @@ public class AllocationService extends AbstractComponent { index++; } for (int i = 0; i < shards.size(); i++) { - MutableShardRouting shardRouting = shards.get(i); + ShardRouting shardRouting = shards.get(i); // we can only move started shards... if (!shardRouting.started()) { continue; @@ -240,9 +240,9 @@ public class AllocationService extends AbstractComponent { // go over and remove dangling replicas that are initializing for primary shards List shardsToFail = Lists.newArrayList(); - for (MutableShardRouting shardEntry : routingNodes.unassigned()) { + for (ShardRouting shardEntry : routingNodes.unassigned()) { if (shardEntry.primary()) { - for (MutableShardRouting routing : routingNodes.assignedShards(shardEntry)) { + for (ShardRouting routing : routingNodes.assignedShards(shardEntry)) { if (!routing.primary() && routing.initializing()) { shardsToFail.add(routing); } @@ -257,9 +257,9 @@ public class AllocationService extends AbstractComponent { // now, go over and elect a new primary if possible, not, from this code block on, if one is elected, // routingNodes.hasUnassignedPrimaries() will potentially be false - for (MutableShardRouting shardEntry : routingNodes.unassigned()) { + for (ShardRouting shardEntry : routingNodes.unassigned()) { if (shardEntry.primary()) { - MutableShardRouting candidate = allocation.routingNodes().activeReplica(shardEntry); + ShardRouting candidate = allocation.routingNodes().activeReplica(shardEntry); if (candidate != null) { IndexMetaData index = allocation.metaData().index(candidate.index()); routingNodes.swapPrimaryFlag(shardEntry, candidate); @@ -268,7 +268,7 @@ public class AllocationService extends AbstractComponent { // its also relocating, make sure to move the other routing to primary RoutingNode node = routingNodes.node(candidate.relocatingNodeId()); if (node != null) { - for (MutableShardRouting shardRouting : node) { + for (ShardRouting shardRouting : node) { if (shardRouting.shardId().equals(candidate.shardId()) && !shardRouting.primary()) { routingNodes.swapPrimaryFlag(shardRouting); break; @@ -312,7 +312,7 @@ public class AllocationService extends AbstractComponent { changed = true; // now, go over all the shards routing on the node, and fail them UnassignedInfo unassignedInfo = new UnassignedInfo(UnassignedInfo.Reason.NODE_LEFT, "node_left[" + node.nodeId() + "]"); - for (MutableShardRouting shardRouting : node.copyShards()) { + for (ShardRouting shardRouting : node.copyShards()) { applyFailedShard(allocation, shardRouting, false, unassignedInfo); } // its a dead node, remove it, note, its important to remove it *after* we apply failed shard @@ -333,7 +333,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator currentRoutingNode = routingNodes.routingNodeIter(startedShard.currentNodeId()); if (currentRoutingNode != null) { - for (MutableShardRouting shard : currentRoutingNode) { + for (ShardRouting shard : currentRoutingNode) { if (shard.shardId().equals(startedShard.shardId())) { relocatingNodeId = shard.relocatingNodeId(); if (!shard.started()) { @@ -356,7 +356,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator sourceRoutingNode = routingNodes.routingNodeIter(relocatingNodeId); if (sourceRoutingNode != null) { while (sourceRoutingNode.hasNext()) { - MutableShardRouting shard = sourceRoutingNode.next(); + ShardRouting shard = sourceRoutingNode.next(); if (shard.shardId().equals(startedShard.shardId())) { if (shard.relocating()) { dirty = true; @@ -377,7 +377,7 @@ public class AllocationService extends AbstractComponent { private boolean applyFailedShard(RoutingAllocation allocation, ShardRouting failedShard, boolean addToIgnoreList, UnassignedInfo unassignedInfo) { // create a copy of the failed shard, since we assume we can change possible references to it without // changing the state of failed shard - failedShard = new ImmutableShardRouting(failedShard); + failedShard = new ShardRouting(failedShard); IndexRoutingTable indexRoutingTable = allocation.routingTable().index(failedShard.index()); if (indexRoutingTable == null) { @@ -394,7 +394,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator initializingNode = routingNodes.routingNodeIter(failedShard.currentNodeId()); if (initializingNode != null) { while (initializingNode.hasNext()) { - MutableShardRouting shardRouting = initializingNode.next(); + ShardRouting shardRouting = initializingNode.next(); if (shardRouting.equals(failedShard)) { dirty = true; initializingNode.remove(); @@ -411,7 +411,7 @@ public class AllocationService extends AbstractComponent { // now, find the node that we are relocating *from*, and cancel its relocation RoutingNode relocatingFromNode = routingNodes.node(failedShard.relocatingNodeId()); if (relocatingFromNode != null) { - for (MutableShardRouting shardRouting : relocatingFromNode) { + for (ShardRouting shardRouting : relocatingFromNode) { if (shardRouting.shardId().equals(failedShard.shardId()) && shardRouting.relocating()) { dirty = true; routingNodes.cancelRelocation(shardRouting); @@ -431,7 +431,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator relocatingFromNode = routingNodes.routingNodeIter(failedShard.currentNodeId()); if (relocatingFromNode != null) { while (relocatingFromNode.hasNext()) { - MutableShardRouting shardRouting = relocatingFromNode.next(); + ShardRouting shardRouting = relocatingFromNode.next(); if (shardRouting.equals(failedShard)) { dirty = true; if (addToIgnoreList) { @@ -448,7 +448,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator initializingNode = routingNodes.routingNodeIter(failedShard.relocatingNodeId()); if (initializingNode != null) { while (initializingNode.hasNext()) { - MutableShardRouting shardRouting = initializingNode.next(); + ShardRouting shardRouting = initializingNode.next(); if (shardRouting.shardId().equals(failedShard.shardId()) && shardRouting.state() == INITIALIZING) { dirty = true; initializingNode.remove(); @@ -466,7 +466,7 @@ public class AllocationService extends AbstractComponent { RoutingNodes.RoutingNodeIterator node = routingNodes.routingNodeIter(failedShard.currentNodeId()); if (node != null) { while (node.hasNext()) { - MutableShardRouting shardRouting = node.next(); + ShardRouting shardRouting = node.next(); if (shardRouting.equals(failedShard)) { dirty = true; if (addToIgnoreList) { @@ -477,9 +477,9 @@ public class AllocationService extends AbstractComponent { // so we give a chance for other allocations and won't create poison failed allocations // that can keep other shards from being allocated (because of limits applied on how many // shards we can start per node) - List shardsToMove = Lists.newArrayList(); - for (Iterator unassignedIt = routingNodes.unassigned().iterator(); unassignedIt.hasNext(); ) { - MutableShardRouting unassignedShardRouting = unassignedIt.next(); + List shardsToMove = Lists.newArrayList(); + for (Iterator unassignedIt = routingNodes.unassigned().iterator(); unassignedIt.hasNext(); ) { + ShardRouting unassignedShardRouting = unassignedIt.next(); if (unassignedShardRouting.shardId().equals(failedShard.shardId())) { unassignedIt.remove(); shardsToMove.add(unassignedShardRouting); diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/BalancedShardsAllocator.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/BalancedShardsAllocator.java index d4a268d522b..560c45f9c9e 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/BalancedShardsAllocator.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/BalancedShardsAllocator.java @@ -23,7 +23,7 @@ import com.google.common.base.Predicate; import org.apache.lucene.util.ArrayUtil; import org.apache.lucene.util.IntroSorter; import org.elasticsearch.cluster.metadata.MetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -118,7 +118,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards } @Override - public boolean move(MutableShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { + public boolean move(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { final Balancer balancer = new Balancer(logger, allocation, weightFunction, threshold); return balancer.move(shardRouting, node); } @@ -227,9 +227,9 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards private final float threshold; private final MetaData metaData; - private final Predicate assignedFilter = new Predicate() { + private final Predicate assignedFilter = new Predicate() { @Override - public boolean apply(MutableShardRouting input) { + public boolean apply(ShardRouting input) { return input.assignedToNode(); } }; @@ -476,7 +476,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards * * @return true iff the shard has successfully been moved. */ - public boolean move(MutableShardRouting shard, RoutingNode node ) { + public boolean move(ShardRouting shard, RoutingNode node ) { if (nodes.isEmpty() || !shard.started()) { /* with no nodes or a not started shard this is pointless */ return false; @@ -508,7 +508,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards Decision decision = allocation.deciders().canAllocate(shard, target, allocation); if (decision.type() == Type.YES) { // TODO maybe we can respect throttling here too? sourceNode.removeShard(shard); - final MutableShardRouting initializingShard = new MutableShardRouting(shard.index(), shard.id(), currentNode.getNodeId(), + final ShardRouting initializingShard = new ShardRouting(shard.index(), shard.id(), currentNode.getNodeId(), shard.currentNodeId(), shard.restoreSource(), shard.primary(), INITIALIZING, shard.version() + 1); currentNode.addShard(initializingShard, decision); routingNodes.assign(initializingShard, target.nodeId()); @@ -534,8 +534,8 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards * on the target node which we respect during the allocation / balancing * process. In short, this method recreates the status-quo in the cluster. */ - private void buildModelFromAssigned(Iterable shards) { - for (MutableShardRouting shard : shards) { + private void buildModelFromAssigned(Iterable shards) { + for (ShardRouting shard : shards) { assert shard.assignedToNode(); /* we skip relocating shards here since we expect an initializing shard with the same id coming in */ if (shard.state() == RELOCATING) { @@ -554,7 +554,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards * Allocates all given shards on the minimal eligable node for the shards index * with respect to the weight function. All given shards must be unassigned. */ - private boolean allocateUnassigned(RoutingNodes.UnassignedShards unassigned, List ignoredUnassigned) { + private boolean allocateUnassigned(RoutingNodes.UnassignedShards unassigned, List ignoredUnassigned) { assert !nodes.isEmpty(); if (logger.isTraceEnabled()) { logger.trace("Start allocating unassigned shards"); @@ -569,10 +569,10 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards * use the sorter to save some iterations. */ final AllocationDeciders deciders = allocation.deciders(); - final Comparator comparator = new Comparator() { + final Comparator comparator = new Comparator() { @Override - public int compare(MutableShardRouting o1, - MutableShardRouting o2) { + public int compare(ShardRouting o1, + ShardRouting o2) { if (o1.primary() ^ o2.primary()) { return o1.primary() ? -1 : o2.primary() ? 1 : 0; } @@ -591,15 +591,15 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards * if we allocate for instance (0, R, IDX1) we move the second replica to the secondary array and proceed with * the next replica. If we could not find a node to allocate (0,R,IDX1) we move all it's replicas to ingoreUnassigned. */ - MutableShardRouting[] primary = unassigned.drain(); - MutableShardRouting[] secondary = new MutableShardRouting[primary.length]; + ShardRouting[] primary = unassigned.drain(); + ShardRouting[] secondary = new ShardRouting[primary.length]; int secondaryLength = 0; int primaryLength = primary.length; ArrayUtil.timSort(primary, comparator); final Set throttledNodes = Collections.newSetFromMap(new IdentityHashMap()); do { for (int i = 0; i < primaryLength; i++) { - MutableShardRouting shard = primary[i]; + ShardRouting shard = primary[i]; if (!shard.primary()) { boolean drop = deciders.canAllocate(shard, allocation).type() == Type.NO; if (drop) { @@ -717,7 +717,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards } } primaryLength = secondaryLength; - MutableShardRouting[] tmp = primary; + ShardRouting[] tmp = primary; primary = secondary; secondary = tmp; secondaryLength = 0; @@ -740,11 +740,11 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards minNode.getNodeId()); } final RoutingNode node = routingNodes.node(minNode.getNodeId()); - MutableShardRouting candidate = null; + ShardRouting candidate = null; final AllocationDeciders deciders = allocation.deciders(); /* make a copy since we modify this list in the loop */ - final ArrayList shards = new ArrayList<>(index.getAllShards()); - for (MutableShardRouting shard : shards) { + final ArrayList shards = new ArrayList<>(index.getAllShards()); + for (ShardRouting shard : shards) { if (shard.started()) { // skip initializing, unassigned and relocating shards we can't relocate them anyway Decision allocationDecision = deciders.canAllocate(shard, node, allocation); @@ -783,7 +783,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards /* now allocate on the cluster - if we are started we need to relocate the shard */ if (candidate.started()) { RoutingNode lowRoutingNode = routingNodes.node(minNode.getNodeId()); - routingNodes.assign(new MutableShardRouting(candidate.index(), candidate.id(), lowRoutingNode.nodeId(), candidate + routingNodes.assign(new ShardRouting(candidate.index(), candidate.id(), lowRoutingNode.nodeId(), candidate .currentNodeId(), candidate.restoreSource(), candidate.primary(), INITIALIZING, candidate.version() + 1), lowRoutingNode.nodeId()); routingNodes.relocate(candidate, lowRoutingNode.nodeId()); @@ -839,8 +839,8 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return index == null ? 0 : index.numShards(); } - public Collection shards() { - Collection result = new ArrayList<>(); + public Collection shards() { + Collection result = new ArrayList<>(); for (ModelIndex index : indices.values()) { result.addAll(index.getAllShards()); } @@ -855,7 +855,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return -1; } - public void addShard(MutableShardRouting shard, Decision decision) { + public void addShard(ShardRouting shard, Decision decision) { numShards = -1; ModelIndex index = indices.get(shard.index()); if (index == null) { @@ -865,7 +865,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards index.addShard(shard, decision); } - public Decision removeShard(MutableShardRouting shard) { + public Decision removeShard(ShardRouting shard) { numShards = -1; ModelIndex index = indices.get(shard.index()); Decision removed = null; @@ -890,7 +890,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return indices.values().iterator(); } - public boolean containsShard(MutableShardRouting shard) { + public boolean containsShard(ShardRouting shard) { ModelIndex index = getIndex(shard.getIndex()); return index == null ? false : index.containsShard(shard); } @@ -899,7 +899,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards static final class ModelIndex { private final String id; - private final Map shards = new HashMap<>(); + private final Map shards = new HashMap<>(); private int numPrimaries = -1; private int highestPrimary = -1; @@ -910,7 +910,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards public int highestPrimary() { if (highestPrimary == -1) { int maxId = -1; - for (MutableShardRouting shard : shards.keySet()) { + for (ShardRouting shard : shards.keySet()) { if (shard.primary()) { maxId = Math.max(maxId, shard.id()); } @@ -924,7 +924,7 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return id; } - public Decision getDecicion(MutableShardRouting shard) { + public Decision getDecicion(ShardRouting shard) { return shards.get(shard); } @@ -932,14 +932,14 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return shards.size(); } - public Collection getAllShards() { + public Collection getAllShards() { return shards.keySet(); } public int numPrimaries() { if (numPrimaries == -1) { int num = 0; - for (MutableShardRouting shard : shards.keySet()) { + for (ShardRouting shard : shards.keySet()) { if (shard.primary()) { num++; } @@ -949,19 +949,19 @@ public class BalancedShardsAllocator extends AbstractComponent implements Shards return numPrimaries; } - public Decision removeShard(MutableShardRouting shard) { + public Decision removeShard(ShardRouting shard) { highestPrimary = numPrimaries = -1; return shards.remove(shard); } - public void addShard(MutableShardRouting shard, Decision decision) { + public void addShard(ShardRouting shard, Decision decision) { highestPrimary = numPrimaries = -1; assert decision != null; assert !shards.containsKey(shard) : "Shard already allocated on current node: " + shards.get(shard) + " " + shard; shards.put(shard, decision); } - public boolean containsShard(MutableShardRouting shard) { + public boolean containsShard(ShardRouting shard) { return shards.containsKey(shard); } } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocator.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocator.java index effcb36fd37..f49d5002814 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocator.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocator.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.routing.allocation.allocator; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -74,5 +73,5 @@ public interface ShardsAllocator { * @param allocation current node allocation * @return true if the allocation has changed, otherwise false */ - boolean move(MutableShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation); + boolean move(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocators.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocators.java index b9ac4bd4f56..8fb65bbfe9b 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocators.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/allocator/ShardsAllocators.java @@ -19,7 +19,7 @@ package org.elasticsearch.cluster.routing.allocation.allocator; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.allocation.FailedRerouteAllocation; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; @@ -80,7 +80,7 @@ public class ShardsAllocators extends AbstractComponent implements ShardsAllocat } @Override - public boolean move(MutableShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { + public boolean move(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { return allocator.move(shardRouting, node, allocation); } } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AllocateAllocationCommand.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AllocateAllocationCommand.java index 18e729aba89..0bc3782651e 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AllocateAllocationCommand.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AllocateAllocationCommand.java @@ -19,10 +19,9 @@ package org.elasticsearch.cluster.routing.allocation.command; -import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.cluster.node.DiscoveryNode; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.allocation.RerouteExplanation; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; @@ -168,8 +167,8 @@ public class AllocateAllocationCommand implements AllocationCommand { public RerouteExplanation execute(RoutingAllocation allocation, boolean explain) { DiscoveryNode discoNode = allocation.nodes().resolveNode(node); - MutableShardRouting shardRouting = null; - for (MutableShardRouting routing : allocation.routingNodes().unassigned()) { + ShardRouting shardRouting = null; + for (ShardRouting routing : allocation.routingNodes().unassigned()) { if (routing.shardId().equals(shardId)) { // prefer primaries first to allocate if (shardRouting == null || routing.primary()) { @@ -219,7 +218,7 @@ public class AllocateAllocationCommand implements AllocationCommand { throw new IllegalArgumentException("[allocate] allocation of " + shardId + " on node " + discoNode + " is not allowed, reason: " + decision); } // go over and remove it from the unassigned - for (Iterator it = allocation.routingNodes().unassigned().iterator(); it.hasNext(); ) { + for (Iterator it = allocation.routingNodes().unassigned().iterator(); it.hasNext(); ) { if (it.next() != shardRouting) { continue; } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java index a87ffea5643..3e68aaf70bc 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java @@ -164,7 +164,7 @@ public class CancelAllocationCommand implements AllocationCommand { DiscoveryNode discoNode = allocation.nodes().resolveNode(node); boolean found = false; for (RoutingNodes.RoutingNodeIterator it = allocation.routingNodes().routingNodeIter(discoNode.id()); it.hasNext(); ) { - MutableShardRouting shardRouting = it.next(); + ShardRouting shardRouting = it.next(); if (!shardRouting.shardId().equals(shardId)) { continue; } @@ -176,7 +176,7 @@ public class CancelAllocationCommand implements AllocationCommand { // and cancel the relocating state from the shard its being relocated from RoutingNode relocatingFromNode = allocation.routingNodes().node(shardRouting.relocatingNodeId()); if (relocatingFromNode != null) { - for (MutableShardRouting fromShardRouting : relocatingFromNode) { + for (ShardRouting fromShardRouting : relocatingFromNode) { if (fromShardRouting.shardId().equals(shardRouting.shardId()) && fromShardRouting.state() == RELOCATING) { allocation.routingNodes().cancelRelocation(fromShardRouting); break; @@ -200,7 +200,7 @@ public class CancelAllocationCommand implements AllocationCommand { RoutingNodes.RoutingNodeIterator initializingNode = allocation.routingNodes().routingNodeIter(shardRouting.relocatingNodeId()); if (initializingNode != null) { while (initializingNode.hasNext()) { - MutableShardRouting initializingShardRouting = initializingNode.next(); + ShardRouting initializingShardRouting = initializingNode.next(); if (initializingShardRouting.shardId().equals(shardRouting.shardId()) && initializingShardRouting.state() == INITIALIZING) { initializingNode.remove(); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java index 185e74443e1..79a92388b69 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java @@ -19,10 +19,9 @@ package org.elasticsearch.cluster.routing.allocation.command; -import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.cluster.node.DiscoveryNode; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.allocation.RerouteExplanation; @@ -152,7 +151,7 @@ public class MoveAllocationCommand implements AllocationCommand { Decision decision = null; boolean found = false; - for (MutableShardRouting shardRouting : allocation.routingNodes().node(fromDiscoNode.id())) { + for (ShardRouting shardRouting : allocation.routingNodes().node(fromDiscoNode.id())) { if (!shardRouting.shardId().equals(shardId)) { continue; } @@ -180,7 +179,7 @@ public class MoveAllocationCommand implements AllocationCommand { // its being throttled, maybe have a flag to take it into account and fail? for now, just do it since the "user" wants it... } - allocation.routingNodes().assign(new MutableShardRouting(shardRouting.index(), shardRouting.id(), + allocation.routingNodes().assign(new ShardRouting(shardRouting.index(), shardRouting.id(), toRoutingNode.nodeId(), shardRouting.currentNodeId(), shardRouting.restoreSource(), shardRouting.primary(), ShardRoutingState.INITIALIZING, shardRouting.version() + 1), toRoutingNode.nodeId()); diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/AwarenessAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/AwarenessAllocationDecider.java index c242a90ce86..a5d8e31e96c 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/AwarenessAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/AwarenessAllocationDecider.java @@ -22,7 +22,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; import com.carrotsearch.hppc.ObjectIntHashMap; import com.google.common.collect.Maps; import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; @@ -185,7 +184,7 @@ public class AwarenessAllocationDecider extends AllocationDecider { // build the count of shards per attribute value ObjectIntHashMap shardPerAttribute = new ObjectIntHashMap<>(); - for (MutableShardRouting assignedShard : allocation.routingNodes().assignedShards(shardRouting)) { + for (ShardRouting assignedShard : allocation.routingNodes().assignedShards(shardRouting)) { // if the shard is relocating, then make sure we count it as part of the node it is relocating to if (assignedShard.relocating()) { RoutingNode relocationNode = allocation.routingNodes().node(assignedShard.relocatingNodeId()); diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/NodeVersionAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/NodeVersionAllocationDecider.java index 1d9c4df7571..7aab2e4b8ac 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/NodeVersionAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/NodeVersionAllocationDecider.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.cluster.routing.ShardRouting; @@ -53,7 +52,7 @@ public class NodeVersionAllocationDecider extends AllocationDecider { // we are the primary we can allocate wherever return allocation.decision(Decision.YES, NAME, "primary shard can be allocated anywhere"); } - final MutableShardRouting primary = allocation.routingNodes().activePrimary(shardRouting); + final ShardRouting primary = allocation.routingNodes().activePrimary(shardRouting); if (primary == null) { // we have a primary - it's a start ;) return allocation.decision(Decision.YES, NAME, "no active primary shard yet"); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ReplicaAfterPrimaryActiveAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ReplicaAfterPrimaryActiveAllocationDecider.java index bebe0a0641c..1c5a3f93b7b 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ReplicaAfterPrimaryActiveAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ReplicaAfterPrimaryActiveAllocationDecider.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; @@ -48,7 +47,7 @@ public class ReplicaAfterPrimaryActiveAllocationDecider extends AllocationDecide if (shardRouting.primary()) { return allocation.decision(Decision.YES, NAME, "shard is primary"); } - MutableShardRouting primary = allocation.routingNodes().activePrimary(shardRouting); + ShardRouting primary = allocation.routingNodes().activePrimary(shardRouting); if (primary == null) { return allocation.decision(Decision.NO, NAME, "primary shard is not yet active"); } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SameShardAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SameShardAllocationDecider.java index 9ad9f797e90..44eb7d0e2f9 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SameShardAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SameShardAllocationDecider.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; @@ -59,8 +58,8 @@ public class SameShardAllocationDecider extends AllocationDecider { @Override public Decision canAllocate(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { - Iterable assignedShards = allocation.routingNodes().assignedShards(shardRouting); - for (MutableShardRouting assignedShard : assignedShards) { + Iterable assignedShards = allocation.routingNodes().assignedShards(shardRouting); + for (ShardRouting assignedShard : assignedShards) { if (node.nodeId().equals(assignedShard.currentNodeId())) { return allocation.decision(Decision.NO, NAME, "shard cannot be allocated on same node [%s] it already exists on", node.nodeId()); } @@ -83,7 +82,7 @@ public class SameShardAllocationDecider extends AllocationDecider { } } if (checkNodeOnSameHost) { - for (MutableShardRouting assignedShard : assignedShards) { + for (ShardRouting assignedShard : assignedShards) { if (checkNode.nodeId().equals(assignedShard.currentNodeId())) { return allocation.decision(Decision.NO, NAME, "shard cannot be allocated on same host [%s] it already exists on", node.nodeId()); diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ShardsLimitAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ShardsLimitAllocationDecider.java index e881ddd65b6..bf03896257b 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ShardsLimitAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ShardsLimitAllocationDecider.java @@ -20,7 +20,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -71,7 +70,7 @@ public class ShardsLimitAllocationDecider extends AllocationDecider { } int nodeCount = 0; - for (MutableShardRouting nodeShard : node) { + for (ShardRouting nodeShard : node) { if (!nodeShard.index().equals(shardRouting.index())) { continue; } @@ -97,7 +96,7 @@ public class ShardsLimitAllocationDecider extends AllocationDecider { } int nodeCount = 0; - for (MutableShardRouting nodeShard : node) { + for (ShardRouting nodeShard : node) { if (!nodeShard.index().equals(shardRouting.index())) { continue; } diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ThrottlingAllocationDecider.java b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ThrottlingAllocationDecider.java index f9da41aa27f..d8d67cc1a2d 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ThrottlingAllocationDecider.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/allocation/decider/ThrottlingAllocationDecider.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.routing.allocation.decider; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -81,7 +80,7 @@ public class ThrottlingAllocationDecider extends AllocationDecider { // primary is unassigned, means we are going to do recovery from gateway // count *just the primary* currently doing recovery on the node and check against concurrent_recoveries int primariesInRecovery = 0; - for (MutableShardRouting shard : node) { + for (ShardRouting shard : node) { // when a primary shard is INITIALIZING, it can be because of *initial recovery* or *relocation from another node* // we only count initial recoveries here, so we need to make sure that relocating node is null if (shard.state() == ShardRoutingState.INITIALIZING && shard.primary() && shard.relocatingNodeId() == null) { @@ -106,7 +105,7 @@ public class ThrottlingAllocationDecider extends AllocationDecider { @Override public Decision canAllocate(RoutingNode node, RoutingAllocation allocation) { int currentRecoveries = 0; - for (MutableShardRouting shard : node) { + for (ShardRouting shard : node) { if (shard.state() == ShardRoutingState.INITIALIZING || shard.state() == ShardRoutingState.RELOCATING) { currentRecoveries++; } diff --git a/core/src/main/java/org/elasticsearch/gateway/GatewayAllocator.java b/core/src/main/java/org/elasticsearch/gateway/GatewayAllocator.java index d7a0499ccd8..e24a83bac5a 100644 --- a/core/src/main/java/org/elasticsearch/gateway/GatewayAllocator.java +++ b/core/src/main/java/org/elasticsearch/gateway/GatewayAllocator.java @@ -33,12 +33,13 @@ import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.cluster.routing.*; -import org.elasticsearch.cluster.routing.allocation.AllocationService; +import org.elasticsearch.cluster.routing.RoutingNode; +import org.elasticsearch.cluster.routing.RoutingNodes; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.allocation.FailedRerouteAllocation; import org.elasticsearch.cluster.routing.allocation.RoutingAllocation; import org.elasticsearch.cluster.routing.allocation.StartedRerouteAllocation; import org.elasticsearch.cluster.routing.allocation.decider.Decision; -import org.elasticsearch.common.Priority; import org.elasticsearch.common.component.AbstractComponent; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.lease.Releasables; @@ -54,7 +55,6 @@ import org.elasticsearch.indices.store.TransportNodesListShardStoreMetaData; import java.util.*; import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.atomic.AtomicBoolean; /** * @@ -148,9 +148,9 @@ public class GatewayAllocator extends AbstractComponent { // First, handle primaries, they must find a place to be allocated on here MetaData metaData = routingNodes.metaData(); - Iterator unassignedIterator = routingNodes.unassigned().iterator(); + Iterator unassignedIterator = routingNodes.unassigned().iterator(); while (unassignedIterator.hasNext()) { - MutableShardRouting shard = unassignedIterator.next(); + ShardRouting shard = unassignedIterator.next(); if (!shard.primary()) { continue; @@ -330,7 +330,7 @@ public class GatewayAllocator extends AbstractComponent { // we found a match changed = true; // make sure we create one with the version from the recovered state - allocation.routingNodes().assign(new MutableShardRouting(shard, highestVersion), node.nodeId()); + allocation.routingNodes().assign(new ShardRouting(shard, highestVersion), node.nodeId()); unassignedIterator.remove(); // found a node, so no throttling, no "no", and break out of the loop @@ -350,7 +350,7 @@ public class GatewayAllocator extends AbstractComponent { // we found a match changed = true; // make sure we create one with the version from the recovered state - allocation.routingNodes().assign(new MutableShardRouting(shard, highestVersion), node.nodeId()); + allocation.routingNodes().assign(new ShardRouting(shard, highestVersion), node.nodeId()); unassignedIterator.remove(); } } else { @@ -370,7 +370,7 @@ public class GatewayAllocator extends AbstractComponent { // Now, handle replicas, try to assign them to nodes that are similar to the one the primary was allocated on unassignedIterator = routingNodes.unassigned().iterator(); while (unassignedIterator.hasNext()) { - MutableShardRouting shard = unassignedIterator.next(); + ShardRouting shard = unassignedIterator.next(); if (shard.primary()) { continue; } @@ -448,7 +448,7 @@ public class GatewayAllocator extends AbstractComponent { if (!shard.primary()) { hasReplicaData |= storeFilesMetaData.iterator().hasNext(); - MutableShardRouting primaryShard = routingNodes.activePrimary(shard); + ShardRouting primaryShard = routingNodes.activePrimary(shard); if (primaryShard != null) { assert primaryShard.active(); DiscoveryNode primaryNode = nodes.get(primaryShard.currentNodeId()); diff --git a/core/src/main/java/org/elasticsearch/gateway/GatewayMetaState.java b/core/src/main/java/org/elasticsearch/gateway/GatewayMetaState.java index a35e01e2d26..86d23ee4416 100644 --- a/core/src/main/java/org/elasticsearch/gateway/GatewayMetaState.java +++ b/core/src/main/java/org/elasticsearch/gateway/GatewayMetaState.java @@ -284,7 +284,7 @@ public class GatewayMetaState extends AbstractComponent implements ClusterStateL throw new IllegalStateException("cluster state does not contain this node - cannot write index meta state"); } Set indices = new HashSet<>(); - for (MutableShardRouting routing : newRoutingNode) { + for (ShardRouting routing : newRoutingNode) { indices.add(routing.index()); } // we have to check the meta data also: closed indices will not appear in the routing table, but we must still write the state if we have it written on disk previously diff --git a/core/src/main/java/org/elasticsearch/index/store/StoreStats.java b/core/src/main/java/org/elasticsearch/index/store/StoreStats.java index 3b7f52a6895..60db82b6562 100644 --- a/core/src/main/java/org/elasticsearch/index/store/StoreStats.java +++ b/core/src/main/java/org/elasticsearch/index/store/StoreStats.java @@ -27,8 +27,10 @@ import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentBuilderString; +import org.elasticsearch.index.shard.ShardPath; import java.io.IOException; +import java.nio.file.Path; /** */ @@ -111,7 +113,6 @@ public class StoreStats implements Streamable, ToXContent { static final XContentBuilderString STORE = new XContentBuilderString("store"); static final XContentBuilderString SIZE = new XContentBuilderString("size"); static final XContentBuilderString SIZE_IN_BYTES = new XContentBuilderString("size_in_bytes"); - static final XContentBuilderString THROTTLE_TIME = new XContentBuilderString("throttle_time"); static final XContentBuilderString THROTTLE_TIME_IN_MILLIS = new XContentBuilderString("throttle_time_in_millis"); } diff --git a/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java b/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java index 6995ecae587..eb74d2f426c 100644 --- a/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java +++ b/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java @@ -270,7 +270,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent 0; replicas--) { diff --git a/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffTests.java b/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffTests.java index f4271c76e78..5bf180dbf90 100644 --- a/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffTests.java @@ -222,7 +222,7 @@ public class ClusterStateDiffTests extends ElasticsearchIntegrationTest { int replicaCount = randomIntBetween(1, 10); for (int j = 0; j < replicaCount; j++) { indexShard.addShard( - new MutableShardRouting(index, i, randomFrom(nodeIds), null, null, j == 0, ShardRoutingState.fromValue((byte) randomIntBetween(2, 4)), 1)); + new ShardRouting(index, i, randomFrom(nodeIds), null, null, j == 0, ShardRoutingState.fromValue((byte) randomIntBetween(2, 4)), 1)); } builder.addIndexShard(indexShard.build()); } diff --git a/core/src/test/java/org/elasticsearch/cluster/ack/AckTests.java b/core/src/test/java/org/elasticsearch/cluster/ack/AckTests.java index ce444a1f3d4..08445ff84d0 100644 --- a/core/src/test/java/org/elasticsearch/cluster/ack/AckTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/ack/AckTests.java @@ -33,7 +33,7 @@ import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.AliasMetaData; import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand; @@ -189,18 +189,18 @@ public class AckTests extends ElasticsearchIntegrationTest { for (Client client : clients()) { ClusterState clusterState = getLocalClusterState(client); - for (MutableShardRouting mutableShardRouting : clusterState.routingNodes().routingNodeIter(moveAllocationCommand.fromNode())) { + for (ShardRouting shardRouting : clusterState.routingNodes().routingNodeIter(moveAllocationCommand.fromNode())) { //if the shard that we wanted to move is still on the same node, it must be relocating - if (mutableShardRouting.shardId().equals(moveAllocationCommand.shardId())) { - assertThat(mutableShardRouting.relocating(), equalTo(true)); + if (shardRouting.shardId().equals(moveAllocationCommand.shardId())) { + assertThat(shardRouting.relocating(), equalTo(true)); } } boolean found = false; - for (MutableShardRouting mutableShardRouting : clusterState.routingNodes().routingNodeIter(moveAllocationCommand.toNode())) { - if (mutableShardRouting.shardId().equals(moveAllocationCommand.shardId())) { - assertThat(mutableShardRouting.state(), anyOf(equalTo(ShardRoutingState.INITIALIZING), equalTo(ShardRoutingState.STARTED))); + for (ShardRouting shardRouting : clusterState.routingNodes().routingNodeIter(moveAllocationCommand.toNode())) { + if (shardRouting.shardId().equals(moveAllocationCommand.shardId())) { + assertThat(shardRouting.state(), anyOf(equalTo(ShardRoutingState.INITIALIZING), equalTo(ShardRoutingState.STARTED))); found = true; break; } @@ -239,19 +239,19 @@ public class AckTests extends ElasticsearchIntegrationTest { //all nodes hold the same cluster state version. We only know there was no need to change anything, thus no need for ack on this update. ClusterStateResponse clusterStateResponse = client().admin().cluster().prepareState().get(); boolean found = false; - for (MutableShardRouting mutableShardRouting : clusterStateResponse.getState().routingNodes().routingNodeIter(moveAllocationCommand.fromNode())) { + for (ShardRouting shardRouting : clusterStateResponse.getState().routingNodes().routingNodeIter(moveAllocationCommand.fromNode())) { //the shard that we wanted to move is still on the same node, as we had dryRun flag - if (mutableShardRouting.shardId().equals(moveAllocationCommand.shardId())) { - assertThat(mutableShardRouting.started(), equalTo(true)); + if (shardRouting.shardId().equals(moveAllocationCommand.shardId())) { + assertThat(shardRouting.started(), equalTo(true)); found = true; break; } } assertThat(found, equalTo(true)); - for (MutableShardRouting mutableShardRouting : clusterStateResponse.getState().routingNodes().routingNodeIter(moveAllocationCommand.toNode())) { - if (mutableShardRouting.shardId().equals(moveAllocationCommand.shardId())) { - fail("shard [" + mutableShardRouting + "] shouldn't be on node [" + moveAllocationCommand.toString() + "]"); + for (ShardRouting shardRouting : clusterStateResponse.getState().routingNodes().routingNodeIter(moveAllocationCommand.toNode())) { + if (shardRouting.shardId().equals(moveAllocationCommand.shardId())) { + fail("shard [" + shardRouting + "] shouldn't be on node [" + moveAllocationCommand.toString() + "]"); } } } @@ -274,7 +274,7 @@ public class AckTests extends ElasticsearchIntegrationTest { private MoveAllocationCommand getAllocationCommand() { String fromNodeId = null; String toNodeId = null; - MutableShardRouting shardToBeMoved = null; + ShardRouting shardToBeMoved = null; ClusterStateResponse clusterStateResponse = client().admin().cluster().prepareState().get(); for (RoutingNode routingNode : clusterStateResponse.getState().routingNodes()) { if (routingNode.node().isDataNode()) { diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/ShardRoutingTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/ShardRoutingTests.java new file mode 100644 index 00000000000..16bd2bb2e46 --- /dev/null +++ b/core/src/test/java/org/elasticsearch/cluster/routing/ShardRoutingTests.java @@ -0,0 +1,125 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.cluster.routing; + +import com.google.common.collect.ImmutableMap; +import org.elasticsearch.Version; +import org.elasticsearch.cluster.ClusterState; +import org.elasticsearch.cluster.metadata.IndexMetaData; +import org.elasticsearch.cluster.metadata.MetaData; +import org.elasticsearch.cluster.node.DiscoveryNode; +import org.elasticsearch.cluster.node.DiscoveryNodes; +import org.elasticsearch.cluster.routing.allocation.AllocationService; +import org.elasticsearch.cluster.routing.allocation.decider.SameShardAllocationDecider; +import org.elasticsearch.common.io.stream.BytesStreamOutput; +import org.elasticsearch.common.io.stream.StreamInput; +import org.elasticsearch.common.transport.DummyTransportAddress; +import org.elasticsearch.test.ElasticsearchAllocationTestCase; +import org.elasticsearch.test.ElasticsearchTestCase; + +import java.io.IOException; + +public class ShardRoutingTests extends ElasticsearchTestCase { + + public void testFrozenAfterRead() throws IOException { + ShardRouting routing = new ShardRouting("foo", 1, "node_1", null, null, false, ShardRoutingState.INITIALIZING, 1); + routing.moveToPrimary(); + assertTrue(routing.primary); + routing.moveFromPrimary(); + assertFalse(routing.primary); + BytesStreamOutput out = new BytesStreamOutput(); + routing.writeTo(out); + ShardRouting newRouting = ShardRouting.readShardRoutingEntry(StreamInput.wrap(out.bytes())); + try { + newRouting.moveToPrimary(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + } + + + public void testFrozenOnRoutingTable() { + MetaData metaData = MetaData.builder() + .put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(2).numberOfReplicas(1)) + .build(); + + RoutingTable routingTable = RoutingTable.builder() + .addAsNew(metaData.index("test")) + .build(); + ClusterState clusterState = ClusterState.builder(org.elasticsearch.cluster.ClusterName.DEFAULT).metaData(metaData).routingTable(routingTable).build(); + for (ShardRouting routing : clusterState.routingTable().allShards()) { + long version = routing.version(); + assertTrue(routing.isFrozen()); + try { + routing.moveToPrimary(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + try { + routing.moveToStarted(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + + try { + routing.moveFromPrimary(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + + try { + routing.assignToNode("boom"); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + try { + routing.cancelRelocation(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + try { + routing.moveToUnassigned(new UnassignedInfo(UnassignedInfo.Reason.REPLICA_ADDED, "foobar")); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + + try { + routing.relocate("foobar"); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + try { + routing.reinitializeShard(); + fail("must be frozen"); + } catch (IllegalStateException ex) { + // expected + } + assertEquals(version, routing.version()); + } + } +} diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/UnassignedInfoTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/UnassignedInfoTests.java index 799f2c5fa19..b7b431e6a2a 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/UnassignedInfoTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/UnassignedInfoTests.java @@ -87,7 +87,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsNew(metaData.index("test"))).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.INDEX_CREATED)); } } @@ -100,7 +100,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsRecovery(metaData.index("test"))).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.CLUSTER_RECOVERED)); } } @@ -113,7 +113,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsFromCloseToOpen(metaData.index("test"))).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.INDEX_REOPENED)); } } @@ -126,7 +126,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsNewRestore(metaData.index("test"), new RestoreSource(new SnapshotId("rep1", "snp1"), "test"), new IntHashSet())).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.NEW_INDEX_RESTORED)); } } @@ -139,7 +139,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsRestore(metaData.index("test"), new RestoreSource(new SnapshotId("rep1", "snp1"), "test"))).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.EXISTING_INDEX_RESTORED)); } } @@ -152,7 +152,7 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT) .metaData(metaData) .routingTable(RoutingTable.builder().addAsFromDangling(metaData.index("test"))).build(); - for (MutableShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { + for (ShardRouting shard : clusterState.routingNodes().shardsWithState(UNASSIGNED)) { assertThat(shard.unassignedInfo().getReason(), equalTo(UnassignedInfo.Reason.DANGLING_INDEX_IMPORTED)); } } @@ -186,8 +186,8 @@ public class UnassignedInfoTests extends ElasticsearchAllocationTestCase { */ @Test public void testStateTransitionMetaHandling() { - ImmutableShardRouting shard = new ImmutableShardRouting("test", 1, null, null, null, true, ShardRoutingState.UNASSIGNED, 1, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null)); - MutableShardRouting mutable = new MutableShardRouting(shard); + ShardRouting shard = new ShardRouting("test", 1, null, null, null, true, ShardRoutingState.UNASSIGNED, 1, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null)); + ShardRouting mutable = new ShardRouting(shard); assertThat(mutable.unassignedInfo(), notNullValue()); mutable.assignToNode("test_node"); assertThat(mutable.state(), equalTo(ShardRoutingState.INITIALIZING)); diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java index 53167a4cf28..be651c9221a 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java @@ -326,7 +326,7 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { } @Override - public boolean move(MutableShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { + public boolean move(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation) { return false; } @@ -365,7 +365,7 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { public boolean allocateUnassigned(RoutingAllocation allocation) { RoutingNodes.UnassignedShards unassigned = allocation.routingNodes().unassigned(); boolean changed = !unassigned.isEmpty(); - for (MutableShardRouting sr : unassigned) { + for (ShardRouting sr : unassigned) { switch (sr.id()) { case 0: if (sr.primary()) { @@ -430,8 +430,8 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { RoutingNodes routingNodes = clusterState.routingNodes(); for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting mutableShardRouting : routingNode) { - assertThat(mutableShardRouting.state(), Matchers.equalTo(ShardRoutingState.INITIALIZING)); + for (ShardRouting shardRouting : routingNode) { + assertThat(shardRouting.state(), Matchers.equalTo(ShardRoutingState.INITIALIZING)); } } strategy = createAllocationService(settings.build()); @@ -442,8 +442,8 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); routingNodes = clusterState.routingNodes(); for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting mutableShardRouting : routingNode) { - assertThat(mutableShardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); + for (ShardRouting shardRouting : routingNode) { + assertThat(shardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); } } @@ -453,8 +453,8 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { routingNodes = clusterState.routingNodes(); for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting mutableShardRouting : routingNode) { - assertThat(mutableShardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); + for (ShardRouting shardRouting : routingNode) { + assertThat(shardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); } } @@ -464,8 +464,8 @@ public class BalanceConfigurationTests extends ElasticsearchAllocationTestCase { routingNodes = clusterState.routingNodes(); for (RoutingNode routingNode : routingNodes) { - for (MutableShardRouting mutableShardRouting : routingNode) { - assertThat(mutableShardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); + for (ShardRouting shardRouting : routingNode) { + assertThat(shardRouting.state(), Matchers.equalTo(ShardRoutingState.STARTED)); } } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/CatAllocationTestBase.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/CatAllocationTestBase.java index 8d48cd8ec53..2e830be83b3 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/CatAllocationTestBase.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/CatAllocationTestBase.java @@ -77,7 +77,7 @@ public abstract class CatAllocationTestBase extends ElasticsearchAllocationTestC ShardRoutingState state = ShardRoutingState.valueOf(matcher.group(4)); String ip = matcher.group(5); nodes.add(ip); - MutableShardRouting routing = new MutableShardRouting(index, shard, ip, null, null, primary, state, 1); + ShardRouting routing = new ShardRouting(index, shard, ip, null, null, primary, state, 1); idx.add(routing); logger.debug("Add routing {}", routing); } else { @@ -95,7 +95,7 @@ public abstract class CatAllocationTestBase extends ElasticsearchAllocationTestC builder.put(idxMeta, false); IndexRoutingTable.Builder tableBuilder = new IndexRoutingTable.Builder(idx.name).initializeAsRecovery(idxMeta); Map shardIdToRouting = new HashMap<>(); - for (MutableShardRouting r : idx.routing) { + for (ShardRouting r : idx.routing) { IndexShardRoutingTable refData = new IndexShardRoutingTable.Builder(new ShardId(idx.name, r.id()), true).addShard(r).build(); if (shardIdToRouting.containsKey(r.getId())) { refData = new IndexShardRoutingTable.Builder(shardIdToRouting.get(r.getId())).addShard(r).build(); @@ -155,20 +155,20 @@ public abstract class CatAllocationTestBase extends ElasticsearchAllocationTestC public class Idx { final String name; - final List routing = new ArrayList<>(); + final List routing = new ArrayList<>(); public Idx(String name) { this.name = name; } - public void add(MutableShardRouting r) { + public void add(ShardRouting r) { routing.add(r); } public int numReplicas() { int count = 0; - for (MutableShardRouting msr : routing) { + for (ShardRouting msr : routing) { if (msr.primary() == false && msr.id()==0) { count++; } @@ -178,7 +178,7 @@ public abstract class CatAllocationTestBase extends ElasticsearchAllocationTestC public int numShards() { int max = 0; - for (MutableShardRouting msr : routing) { + for (ShardRouting msr : routing) { if (msr.primary()) { max = Math.max(msr.getId()+1, max); } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FailedShardsRoutingTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FailedShardsRoutingTests.java index ce10fdfa055..541e966b787 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FailedShardsRoutingTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FailedShardsRoutingTests.java @@ -111,7 +111,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { assertThat(clusterState.routingNodes().node("node3").get(0).state(), equalTo(INITIALIZING)); logger.info("--> fail primary shard recovering instance on node3 being initialized"); - rerouteResult = allocation.applyFailedShard(clusterState, new ImmutableShardRouting(clusterState.routingNodes().node("node3").get(0))); + rerouteResult = allocation.applyFailedShard(clusterState, new ShardRouting(clusterState.routingNodes().node("node3").get(0))); clusterState = ClusterState.builder(clusterState).routingTable(rerouteResult.routingTable()).build(); assertThat(clusterState.routingNodes().node(origPrimaryNodeId).get(0).state(), equalTo(STARTED)); @@ -127,7 +127,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { assertThat(clusterState.routingNodes().node("node3").get(0).state(), equalTo(INITIALIZING)); logger.info("--> fail primary shard recovering instance on node1 being relocated"); - rerouteResult = allocation.applyFailedShard(clusterState, new ImmutableShardRouting(clusterState.routingNodes().node(origPrimaryNodeId).get(0))); + rerouteResult = allocation.applyFailedShard(clusterState, new ShardRouting(clusterState.routingNodes().node(origPrimaryNodeId).get(0))); clusterState = ClusterState.builder(clusterState).routingTable(rerouteResult.routingTable()).build(); // check promotion of replica to primary @@ -199,7 +199,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { } logger.info("fail the primary shard, will have no place to be rerouted to (single node), so stays unassigned"); - ShardRouting shardToFail = new ImmutableShardRouting(routingTable.index("test").shard(0).primaryShard()); + ShardRouting shardToFail = new ShardRouting(routingTable.index("test").shard(0).primaryShard()); prevRoutingTable = routingTable; routingTable = strategy.applyFailedShard(clusterState, shardToFail).routingTable(); clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); @@ -256,7 +256,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { logger.info("fail the first shard, will have no place to be rerouted to (single node), so stays unassigned"); prevRoutingTable = routingTable; - routingTable = strategy.applyFailedShard(clusterState, new ImmutableShardRouting("test", 0, "node1", true, INITIALIZING, 0)).routingTable(); + routingTable = strategy.applyFailedShard(clusterState, new ShardRouting("test", 0, "node1", true, INITIALIZING, 0)).routingTable(); clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); RoutingNodes routingNodes = clusterState.routingNodes(); @@ -272,7 +272,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { } logger.info("fail the shard again, see that nothing happens"); - assertThat(strategy.applyFailedShard(clusterState, new ImmutableShardRouting("test", 0, "node1", true, INITIALIZING, 0)).changed(), equalTo(false)); + assertThat(strategy.applyFailedShard(clusterState, new ShardRouting("test", 0, "node1", true, INITIALIZING, 0)).changed(), equalTo(false)); } @Test @@ -318,7 +318,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { String n = "node" + Integer.toString(randomInt(numberOfReplicas)); logger.info("failing shard on node [{}]", n); ShardRouting shardToFail = routingNodes.node(n).get(0); - failedShards.add(new FailedRerouteAllocation.FailedShard(new MutableShardRouting(shardToFail), null)); + failedShards.add(new FailedRerouteAllocation.FailedShard(new ShardRouting(shardToFail), null)); } routingTable = strategy.applyFailedShards(clusterState, failedShards).routingTable(); @@ -371,7 +371,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { logger.info("fail the first shard, will start INITIALIZING on the second node"); prevRoutingTable = routingTable; - routingTable = strategy.applyFailedShard(clusterState, new ImmutableShardRouting("test", 0, nodeHoldingPrimary, true, INITIALIZING, 0)).routingTable(); + routingTable = strategy.applyFailedShard(clusterState, new ShardRouting("test", 0, nodeHoldingPrimary, true, INITIALIZING, 0)).routingTable(); clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); RoutingNodes routingNodes = clusterState.routingNodes(); @@ -387,7 +387,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { } logger.info("fail the shard again, see that nothing happens"); - assertThat(strategy.applyFailedShard(clusterState, new ImmutableShardRouting("test", 0, nodeHoldingPrimary, true, INITIALIZING, 0)).changed(), equalTo(false)); + assertThat(strategy.applyFailedShard(clusterState, new ShardRouting("test", 0, nodeHoldingPrimary, true, INITIALIZING, 0)).changed(), equalTo(false)); } @Test @@ -471,7 +471,7 @@ public class FailedShardsRoutingTests extends ElasticsearchAllocationTestCase { ShardRouting shardToFail = routingNodes.node("node3").get(0); routingNodes = clusterState.routingNodes(); prevRoutingTable = routingTable; - routingTable = strategy.applyFailedShard(clusterState, new ImmutableShardRouting(shardToFail)).routingTable(); + routingTable = strategy.applyFailedShard(clusterState, new ShardRouting(shardToFail)).routingTable(); clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); routingNodes = clusterState.routingNodes(); diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FilterRoutingTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FilterRoutingTests.java index 786a0f9e569..04fb417e218 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FilterRoutingTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/FilterRoutingTests.java @@ -25,7 +25,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.common.logging.ESLogger; @@ -85,9 +85,9 @@ public class FilterRoutingTests extends ElasticsearchAllocationTestCase { clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); logger.info("--> make sure shards are only allocated on tag1 with value1 and value2"); - List startedShards = clusterState.routingNodes().shardsWithState(ShardRoutingState.STARTED); + List startedShards = clusterState.routingNodes().shardsWithState(ShardRoutingState.STARTED); assertThat(startedShards.size(), equalTo(4)); - for (MutableShardRouting startedShard : startedShards) { + for (ShardRouting startedShard : startedShards) { assertThat(startedShard.currentNodeId(), Matchers.anyOf(equalTo("node1"), equalTo("node2"))); } } @@ -134,9 +134,9 @@ public class FilterRoutingTests extends ElasticsearchAllocationTestCase { clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); logger.info("--> make sure shards are only allocated on tag1 with value1 and value2"); - List startedShards = clusterState.routingNodes().shardsWithState(ShardRoutingState.STARTED); + List startedShards = clusterState.routingNodes().shardsWithState(ShardRoutingState.STARTED); assertThat(startedShards.size(), equalTo(4)); - for (MutableShardRouting startedShard : startedShards) { + for (ShardRouting startedShard : startedShards) { assertThat(startedShard.currentNodeId(), Matchers.anyOf(equalTo("node1"), equalTo("node2"))); } @@ -162,7 +162,7 @@ public class FilterRoutingTests extends ElasticsearchAllocationTestCase { startedShards = clusterState.routingNodes().shardsWithState(ShardRoutingState.STARTED); assertThat(startedShards.size(), equalTo(4)); - for (MutableShardRouting startedShard : startedShards) { + for (ShardRouting startedShard : startedShards) { assertThat(startedShard.currentNodeId(), Matchers.anyOf(equalTo("node1"), equalTo("node4"))); } } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java index 006fa12208b..2b4ff06468c 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java @@ -25,7 +25,7 @@ import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -316,8 +316,8 @@ public class NodeVersionAllocationDeciderTests extends ElasticsearchAllocationTe private final void assertRecoveryNodeVersions(RoutingNodes routingNodes) { logger.trace("RoutingNodes: {}", routingNodes.prettyPrint()); - List mutableShardRoutings = routingNodes.shardsWithState(ShardRoutingState.RELOCATING); - for (MutableShardRouting r : mutableShardRoutings) { + List mutableShardRoutings = routingNodes.shardsWithState(ShardRoutingState.RELOCATING); + for (ShardRouting r : mutableShardRoutings) { String toId = r.relocatingNodeId(); String fromId = r.currentNodeId(); assertThat(fromId, notNullValue()); @@ -327,9 +327,9 @@ public class NodeVersionAllocationDeciderTests extends ElasticsearchAllocationTe } mutableShardRoutings = routingNodes.shardsWithState(ShardRoutingState.INITIALIZING); - for (MutableShardRouting r : mutableShardRoutings) { + for (ShardRouting r : mutableShardRoutings) { if (r.initializing() && r.relocatingNodeId() == null && !r.primary()) { - MutableShardRouting primary = routingNodes.activePrimary(r); + ShardRouting primary = routingNodes.activePrimary(r); assertThat(primary, notNullValue()); String fromId = primary.currentNodeId(); String toId = r.currentNodeId(); diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/PreferLocalPrimariesToRelocatingPrimariesTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/PreferLocalPrimariesToRelocatingPrimariesTests.java index 1c5b2ea7eb7..de1a57e993e 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/PreferLocalPrimariesToRelocatingPrimariesTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/PreferLocalPrimariesToRelocatingPrimariesTests.java @@ -24,7 +24,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.test.ElasticsearchAllocationTestCase; import org.junit.Test; @@ -108,7 +108,7 @@ public class PreferLocalPrimariesToRelocatingPrimariesTests extends Elasticsearc while (clusterState.routingNodes().shardsWithState(STARTED).size() < totalNumberOfShards) { int localInitializations = 0; int relocatingInitializations = 0; - for (MutableShardRouting routing : clusterState.routingNodes().shardsWithState(INITIALIZING)) { + for (ShardRouting routing : clusterState.routingNodes().shardsWithState(INITIALIZING)) { if (routing.relocatingNodeId() == null) { localInitializations++; } else { diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SameShardRoutingTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SameShardRoutingTests.java index 355f917b1c1..09dba759290 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SameShardRoutingTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SameShardRoutingTests.java @@ -26,7 +26,7 @@ import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.allocation.decider.SameShardAllocationDecider; @@ -84,7 +84,7 @@ public class SameShardRoutingTests extends ElasticsearchAllocationTestCase { assertThat(numberOfShardsOfType(clusterState.readOnlyRoutingNodes(), ShardRoutingState.STARTED), equalTo(2)); assertThat(numberOfShardsOfType(clusterState.readOnlyRoutingNodes(), ShardRoutingState.INITIALIZING), equalTo(2)); - for (MutableShardRouting shardRouting : clusterState.readOnlyRoutingNodes().shardsWithState(INITIALIZING)) { + for (ShardRouting shardRouting : clusterState.readOnlyRoutingNodes().shardsWithState(INITIALIZING)) { assertThat(shardRouting.currentNodeId(), equalTo("node3")); } } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/ShardsLimitAllocationTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/ShardsLimitAllocationTests.java index 68732d9fa64..6b69be0a3db 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/ShardsLimitAllocationTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/ShardsLimitAllocationTests.java @@ -24,7 +24,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.ShardRoutingState; @@ -149,10 +149,10 @@ public class ShardsLimitAllocationTests extends ElasticsearchAllocationTestCase assertThat(numberOfShardsOfType(clusterState.readOnlyRoutingNodes(), STARTED), equalTo(10)); - for (MutableShardRouting shardRouting : clusterState.readOnlyRoutingNodes().node("node1")) { + for (ShardRouting shardRouting : clusterState.readOnlyRoutingNodes().node("node1")) { assertThat(shardRouting.index(), equalTo("test")); } - for (MutableShardRouting shardRouting : clusterState.readOnlyRoutingNodes().node("node2")) { + for (ShardRouting shardRouting : clusterState.readOnlyRoutingNodes().node("node2")) { assertThat(shardRouting.index(), equalTo("test1")); } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SingleShardNoReplicasRoutingTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SingleShardNoReplicasRoutingTests.java index 7044d34ec7c..e99c8860c4a 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SingleShardNoReplicasRoutingTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/SingleShardNoReplicasRoutingTests.java @@ -25,7 +25,7 @@ import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNode; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.cluster.routing.RoutingTable; @@ -270,7 +270,7 @@ public class SingleShardNoReplicasRoutingTests extends ElasticsearchAllocationTe int nodeIndex = Integer.parseInt(routingNode.nodeId().substring("node".length())); assertThat(nodeIndex, lessThan(25)); // check that we don't have a shard associated with a node with the same index name (we have a single shard) - for (MutableShardRouting shardRoutingEntry : routingNode) { + for (ShardRouting shardRoutingEntry : routingNode) { assertThat(encounteredIndices, not(hasItem(shardRoutingEntry.index()))); encounteredIndices.add(shardRoutingEntry.index()); } diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/DiskThresholdDeciderTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/DiskThresholdDeciderTests.java index 7ec9c5e8b16..ebc862b0e4f 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/DiskThresholdDeciderTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/DiskThresholdDeciderTests.java @@ -829,8 +829,8 @@ public class DiskThresholdDeciderTests extends ElasticsearchAllocationTestCase { .build(); // Two shards consuming each 80% of disk space while 70% is allowed, so shard 0 isn't allowed here - MutableShardRouting firstRouting = new MutableShardRouting("test", 0, "node1", null, null, true, ShardRoutingState.STARTED, 1); - MutableShardRouting secondRouting = new MutableShardRouting("test", 1, "node1", null, null, true, ShardRoutingState.STARTED, 1); + ShardRouting firstRouting = new ShardRouting("test", 0, "node1", null, null, true, ShardRoutingState.STARTED, 1); + ShardRouting secondRouting = new ShardRouting("test", 1, "node1", null, null, true, ShardRoutingState.STARTED, 1); RoutingNode firstRoutingNode = new RoutingNode("node1", discoveryNode1, Arrays.asList(firstRouting, secondRouting)); RoutingTable.Builder builder = RoutingTable.builder().add( IndexRoutingTable.builder("test") @@ -849,8 +849,8 @@ public class DiskThresholdDeciderTests extends ElasticsearchAllocationTestCase { assertThat(decision.type(), equalTo(Decision.Type.NO)); // Two shards consuming each 80% of disk space while 70% is allowed, but one is relocating, so shard 0 can stay - firstRouting = new MutableShardRouting("test", 0, "node1", null, null, true, ShardRoutingState.STARTED, 1); - secondRouting = new MutableShardRouting("test", 1, "node1", "node2", null, true, ShardRoutingState.RELOCATING, 1); + firstRouting = new ShardRouting("test", 0, "node1", null, null, true, ShardRoutingState.STARTED, 1); + secondRouting = new ShardRouting("test", 1, "node1", "node2", null, true, ShardRoutingState.RELOCATING, 1); firstRoutingNode = new RoutingNode("node1", discoveryNode1, Arrays.asList(firstRouting, secondRouting)); builder = RoutingTable.builder().add( IndexRoutingTable.builder("test") @@ -904,9 +904,9 @@ public class DiskThresholdDeciderTests extends ElasticsearchAllocationTestCase { public void logShardStates(ClusterState state) { RoutingNodes rn = state.routingNodes(); logger.info("--> counts: total: {}, unassigned: {}, initializing: {}, relocating: {}, started: {}", - rn.shards(new Predicate() { + rn.shards(new Predicate() { @Override - public boolean apply(org.elasticsearch.cluster.routing.MutableShardRouting input) { + public boolean apply(ShardRouting input) { return true; } }).size(), diff --git a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/EnableAllocationTests.java b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/EnableAllocationTests.java index 52c4bb27a1e..bb7944c332e 100644 --- a/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/EnableAllocationTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/EnableAllocationTests.java @@ -26,7 +26,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.allocation.AllocationService; import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider.Allocation; @@ -236,22 +236,22 @@ public class EnableAllocationTests extends ElasticsearchAllocationTestCase { clusterState = ClusterState.builder(clusterState).routingTable(routingTable).build(); assertThat("expected 6 shards to be started 2 to relocate useClusterSettings: " + useClusterSetting, clusterState.routingNodes().shardsWithState(STARTED).size(), equalTo(6)); assertThat("expected 2 shards to relocate useClusterSettings: " + useClusterSetting, clusterState.routingNodes().shardsWithState(RELOCATING).size(), equalTo(2)); - List mutableShardRoutings = clusterState.routingNodes().shardsWithState(RELOCATING); + List mutableShardRoutings = clusterState.routingNodes().shardsWithState(RELOCATING); switch (allowedOnes) { case PRIMARIES: - for (MutableShardRouting routing : mutableShardRoutings) { + for (ShardRouting routing : mutableShardRoutings) { assertTrue("only primaries are allowed to relocate", routing.primary()); assertThat("only test index can rebalance", routing.getIndex(), equalTo("test")); } break; case REPLICAS: - for (MutableShardRouting routing : mutableShardRoutings) { + for (ShardRouting routing : mutableShardRoutings) { assertFalse("only replicas are allowed to relocate", routing.primary()); assertThat("only test index can rebalance", routing.getIndex(), equalTo("test")); } break; case ALL: - for (MutableShardRouting routing : mutableShardRoutings) { + for (ShardRouting routing : mutableShardRoutings) { assertThat("only test index can rebalance", routing.getIndex(), equalTo("test")); } break; diff --git a/core/src/test/java/org/elasticsearch/index/TransportIndexFailuresTest.java b/core/src/test/java/org/elasticsearch/index/TransportIndexFailuresTest.java index e70ddfded40..b6ef53db87a 100644 --- a/core/src/test/java/org/elasticsearch/index/TransportIndexFailuresTest.java +++ b/core/src/test/java/org/elasticsearch/index/TransportIndexFailuresTest.java @@ -26,7 +26,7 @@ import org.elasticsearch.action.index.IndexAction; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.routing.IndexShardRoutingTable; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingNodes; import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Settings; @@ -135,9 +135,9 @@ public class TransportIndexFailuresTest extends ElasticsearchIntegrationTest { state = getNodeClusterState(randomFrom(nodes.toArray(Strings.EMPTY_ARRAY))); RoutingNodes rn = state.routingNodes(); logger.info("--> counts: total: {}, unassigned: {}, initializing: {}, relocating: {}, started: {}", - rn.shards(new Predicate() { + rn.shards(new Predicate() { @Override - public boolean apply(org.elasticsearch.cluster.routing.MutableShardRouting input) { + public boolean apply(ShardRouting input) { return true; } }).size(), diff --git a/core/src/test/java/org/elasticsearch/index/shard/IndexShardTests.java b/core/src/test/java/org/elasticsearch/index/shard/IndexShardTests.java index f101e60152f..12237cea895 100644 --- a/core/src/test/java/org/elasticsearch/index/shard/IndexShardTests.java +++ b/core/src/test/java/org/elasticsearch/index/shard/IndexShardTests.java @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException; import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.stats.IndexStats; import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.common.bytes.BytesArray; @@ -140,40 +139,40 @@ public class IndexShardTests extends ElasticsearchSingleNodeTest { IndexShard shard = test.shard(0); ShardStateMetaData shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(getShardStateMetadata(shard), shardStateMetaData); - ShardRouting routing = new MutableShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); + ShardRouting routing = new ShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); shard.updateRoutingEntry(routing, true); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(shardStateMetaData, getShardStateMetadata(shard)); assertEquals(shardStateMetaData, new ShardStateMetaData(routing.version(), routing.primary(), shard.indexSettings.get(IndexMetaData.SETTING_UUID))); - routing = new MutableShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); + routing = new ShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); shard.updateRoutingEntry(routing, true); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(shardStateMetaData, getShardStateMetadata(shard)); assertEquals(shardStateMetaData, new ShardStateMetaData(routing.version(), routing.primary(), shard.indexSettings.get(IndexMetaData.SETTING_UUID))); - routing = new MutableShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); + routing = new ShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); shard.updateRoutingEntry(routing, true); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(shardStateMetaData, getShardStateMetadata(shard)); assertEquals(shardStateMetaData, new ShardStateMetaData(routing.version(), routing.primary(), shard.indexSettings.get(IndexMetaData.SETTING_UUID))); // test if we still write it even if the shard is not active - MutableShardRouting inactiveRouting = new MutableShardRouting(shard.shardRouting.index(), shard.shardRouting.shardId().id(), shard.shardRouting.currentNodeId(), null, null, true, ShardRoutingState.INITIALIZING, shard.shardRouting.version() + 1); + ShardRouting inactiveRouting = new ShardRouting(shard.shardRouting.index(), shard.shardRouting.shardId().id(), shard.shardRouting.currentNodeId(), null, null, true, ShardRoutingState.INITIALIZING, shard.shardRouting.version() + 1); shard.persistMetadata(inactiveRouting, shard.shardRouting); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals("inactive shard state shouldn't be persisted", shardStateMetaData, getShardStateMetadata(shard)); assertEquals("inactive shard state shouldn't be persisted", shardStateMetaData, new ShardStateMetaData(routing.version(), routing.primary(), shard.indexSettings.get(IndexMetaData.SETTING_UUID))); - shard.updateRoutingEntry(new MutableShardRouting(shard.shardRouting, shard.shardRouting.version() + 1), false); + shard.updateRoutingEntry(new ShardRouting(shard.shardRouting, shard.shardRouting.version() + 1), false); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertFalse("shard state persisted despite of persist=false", shardStateMetaData.equals(getShardStateMetadata(shard))); assertEquals("shard state persisted despite of persist=false", shardStateMetaData, new ShardStateMetaData(routing.version(), routing.primary(), shard.indexSettings.get(IndexMetaData.SETTING_UUID))); - routing = new MutableShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); + routing = new ShardRouting(shard.shardRouting, shard.shardRouting.version() + 1); shard.updateRoutingEntry(routing, true); shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(shardStateMetaData, getShardStateMetadata(shard)); @@ -198,7 +197,7 @@ public class IndexShardTests extends ElasticsearchSingleNodeTest { ShardStateMetaData shardStateMetaData = load(logger, env.availableShardPaths(shard.shardId)); assertEquals(shardStateMetaData, getShardStateMetadata(shard)); - routing = new MutableShardRouting(shard.shardId.index().getName(), shard.shardId.id(), routing.currentNodeId(), null, null, routing.primary(), ShardRoutingState.INITIALIZING, shard.shardRouting.version() + 1); + routing = new ShardRouting(shard.shardId.index().getName(), shard.shardId.id(), routing.currentNodeId(), null, null, routing.primary(), ShardRoutingState.INITIALIZING, shard.shardRouting.version() + 1); shard.updateRoutingEntry(routing, true); shard.deleteShardState(); diff --git a/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerTests.java b/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerTests.java index 5cccd4436bb..05756388a65 100644 --- a/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerTests.java +++ b/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerTests.java @@ -24,7 +24,7 @@ import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand; import org.elasticsearch.common.Nullable; @@ -124,7 +124,7 @@ public class IndicesLifecycleListenerTests extends ElasticsearchIntegrationTest client().admin().cluster().prepareReroute().add(new MoveAllocationCommand(new ShardId("index1", 0), node1, node2)).get(); ensureGreen("index1"); ClusterState state = client().admin().cluster().prepareState().get().getState(); - List shard = state.getRoutingNodes().shardsWithState(ShardRoutingState.STARTED); + List shard = state.getRoutingNodes().shardsWithState(ShardRoutingState.STARTED); assertThat(shard, hasSize(1)); assertThat(state.nodes().resolveNode(shard.get(0).currentNodeId()).getName(), Matchers.equalTo(node1)); } diff --git a/core/src/test/java/org/elasticsearch/indices/flush/SyncedFlushUnitTests.java b/core/src/test/java/org/elasticsearch/indices/flush/SyncedFlushUnitTests.java index 426ec36d608..3c186d0c4d2 100644 --- a/core/src/test/java/org/elasticsearch/indices/flush/SyncedFlushUnitTests.java +++ b/core/src/test/java/org/elasticsearch/indices/flush/SyncedFlushUnitTests.java @@ -21,7 +21,6 @@ package org.elasticsearch.indices.flush; import com.carrotsearch.hppc.ObjectIntHashMap; import com.carrotsearch.hppc.ObjectIntMap; -import org.elasticsearch.cluster.routing.ImmutableShardRouting; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.index.shard.ShardId; @@ -107,7 +106,7 @@ public class SyncedFlushUnitTests extends ElasticsearchTestCase { } else { Map shardResponses = new HashMap<>(); for (int copy = 0; copy < replicas + 1; copy++) { - final ShardRouting shardRouting = new ImmutableShardRouting(index, shard, "node_" + shardId + "_" + copy, null, + final ShardRouting shardRouting = new ShardRouting(index, shard, "node_" + shardId + "_" + copy, null, copy == 0, ShardRoutingState.STARTED, 0); if (randomInt(5) < 2) { // shard copy failure diff --git a/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreIntegrationTests.java b/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreIntegrationTests.java index f2d662877d3..6c5d3cd71da 100644 --- a/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreIntegrationTests.java +++ b/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreIntegrationTests.java @@ -226,8 +226,8 @@ public class IndicesStoreIntegrationTests extends ElasticsearchIntegrationTest { RoutingNode routingNode = stateResponse.getState().routingNodes().node(node_2_id); final int[] node2Shards = new int[routingNode.numberOfOwningShards()]; int i = 0; - for (MutableShardRouting mutableShardRouting : routingNode) { - node2Shards[i] = mutableShardRouting.shardId().id(); + for (ShardRouting shardRouting : routingNode) { + node2Shards[i] = shardRouting.shardId().id(); i++; } logger.info("Node 2 has shards: {}", Arrays.toString(node2Shards)); @@ -249,7 +249,7 @@ public class IndicesStoreIntegrationTests extends ElasticsearchIntegrationTest { for (int i = 0; i < numShards; i++) { indexRoutingTableBuilder.addIndexShard( new IndexShardRoutingTable.Builder(new ShardId("test", i), false) - .addShard(new ImmutableShardRouting("test", i, node_1_id, true, ShardRoutingState.STARTED, shardVersions[shardIds[i]])) + .addShard(new ShardRouting("test", i, node_1_id, true, ShardRoutingState.STARTED, shardVersions[shardIds[i]])) .build() ); } diff --git a/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreTests.java b/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreTests.java index bac1467fc07..cf4791b669b 100644 --- a/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreTests.java +++ b/core/src/test/java/org/elasticsearch/indices/store/IndicesStoreTests.java @@ -26,7 +26,7 @@ import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.cluster.routing.ImmutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.IndexShardRoutingTable; import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.UnassignedInfo; @@ -100,7 +100,7 @@ public class IndicesStoreTests extends ElasticsearchTestCase { if (state == ShardRoutingState.UNASSIGNED) { unassignedInfo = new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null); } - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", null, null, j == 0, state, 0, unassignedInfo)); + routingTable.addShard(new ShardRouting("test", i, "xyz", null, null, j == 0, state, 0, unassignedInfo)); } } assertFalse(indicesStore.shardCanBeDeleted(clusterState.build(), routingTable.build())); @@ -119,9 +119,9 @@ public class IndicesStoreTests extends ElasticsearchTestCase { for (int i = 0; i < numShards; i++) { String nodeId = i == localShardId ? localNode.getId() : randomBoolean() ? "abc" : "xyz"; String relocationNodeId = randomBoolean() ? null : randomBoolean() ? localNode.getId() : "xyz"; - routingTable.addShard(new ImmutableShardRouting("test", i, nodeId, relocationNodeId, true, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, nodeId, relocationNodeId, true, ShardRoutingState.STARTED, 0)); for (int j = 0; j < numReplicas; j++) { - routingTable.addShard(new ImmutableShardRouting("test", i, nodeId, relocationNodeId, false, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, nodeId, relocationNodeId, false, ShardRoutingState.STARTED, 0)); } } @@ -140,9 +140,9 @@ public class IndicesStoreTests extends ElasticsearchTestCase { IndexShardRoutingTable.Builder routingTable = new IndexShardRoutingTable.Builder(new ShardId("test", 1), false); for (int i = 0; i < numShards; i++) { String relocatingNodeId = randomBoolean() ? null : "def"; - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", relocatingNodeId, true, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", relocatingNodeId, true, ShardRoutingState.STARTED, 0)); for (int j = 0; j < numReplicas; j++) { - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", relocatingNodeId, false, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", relocatingNodeId, false, ShardRoutingState.STARTED, 0)); } } @@ -162,9 +162,9 @@ public class IndicesStoreTests extends ElasticsearchTestCase { clusterState.nodes(DiscoveryNodes.builder().localNodeId(localNode.id()).put(localNode).put(new DiscoveryNode("xyz", new LocalTransportAddress("xyz"), nodeVersion))); IndexShardRoutingTable.Builder routingTable = new IndexShardRoutingTable.Builder(new ShardId("test", 1), false); for (int i = 0; i < numShards; i++) { - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", null, true, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", null, true, ShardRoutingState.STARTED, 0)); for (int j = 0; j < numReplicas; j++) { - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", null, false, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", null, false, ShardRoutingState.STARTED, 0)); } } @@ -188,9 +188,9 @@ public class IndicesStoreTests extends ElasticsearchTestCase { )); IndexShardRoutingTable.Builder routingTable = new IndexShardRoutingTable.Builder(new ShardId("test", 1), false); for (int i = 0; i < numShards; i++) { - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", "def", true, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", "def", true, ShardRoutingState.STARTED, 0)); for (int j = 0; j < numReplicas; j++) { - routingTable.addShard(new ImmutableShardRouting("test", i, "xyz", "def", false, ShardRoutingState.STARTED, 0)); + routingTable.addShard(new ShardRouting("test", i, "xyz", "def", false, ShardRoutingState.STARTED, 0)); } } diff --git a/core/src/test/java/org/elasticsearch/test/ElasticsearchAllocationTestCase.java b/core/src/test/java/org/elasticsearch/test/ElasticsearchAllocationTestCase.java index 885b77a1f8e..25f13c8b573 100644 --- a/core/src/test/java/org/elasticsearch/test/ElasticsearchAllocationTestCase.java +++ b/core/src/test/java/org/elasticsearch/test/ElasticsearchAllocationTestCase.java @@ -23,7 +23,7 @@ import org.elasticsearch.Version; import org.elasticsearch.cluster.ClusterInfoService; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.node.DiscoveryNode; -import org.elasticsearch.cluster.routing.MutableShardRouting; +import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.routing.allocation.AllocationService; import org.elasticsearch.cluster.routing.allocation.allocator.ShardsAllocators; @@ -114,7 +114,7 @@ public abstract class ElasticsearchAllocationTestCase extends ElasticsearchTestC } public static ClusterState startRandomInitializingShard(ClusterState clusterState, AllocationService strategy) { - List initializingShards = clusterState.routingNodes().shardsWithState(INITIALIZING); + List initializingShards = clusterState.routingNodes().shardsWithState(INITIALIZING); if (initializingShards.isEmpty()) { return clusterState; } diff --git a/core/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java b/core/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java index 118ef3c15bd..3ad3cd76dfb 100644 --- a/core/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java +++ b/core/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java @@ -31,7 +31,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.impl.client.HttpClients; import org.elasticsearch.cluster.routing.UnassignedInfo; import org.elasticsearch.index.shard.MergeSchedulerConfig; -import org.apache.lucene.store.StoreRateLimiting; import org.apache.lucene.util.IOUtils; import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.util.TestUtil; @@ -110,19 +109,15 @@ import org.elasticsearch.index.translog.TranslogService; import org.elasticsearch.index.translog.TranslogWriter; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.indices.cache.query.IndicesQueryCache; -import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache; import org.elasticsearch.indices.flush.IndicesSyncedFlushResult; import org.elasticsearch.indices.flush.SyncedFlushService; -import org.elasticsearch.indices.recovery.RecoverySettings; import org.elasticsearch.indices.store.IndicesStore; import org.elasticsearch.node.Node; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.SearchService; import org.elasticsearch.test.client.RandomizingClient; import org.elasticsearch.test.disruption.ServiceDisruptionScheme; import org.elasticsearch.test.rest.client.http.HttpRequestBuilder; -import org.elasticsearch.transport.netty.NettyTransport; import org.hamcrest.Matchers; import org.joda.time.DateTimeZone; import org.junit.*; diff --git a/core/src/test/java/org/elasticsearch/test/InternalTestCluster.java b/core/src/test/java/org/elasticsearch/test/InternalTestCluster.java index d6e6ebca5e6..9e9bf3ec7ca 100644 --- a/core/src/test/java/org/elasticsearch/test/InternalTestCluster.java +++ b/core/src/test/java/org/elasticsearch/test/InternalTestCluster.java @@ -82,8 +82,6 @@ import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.IndexShardModule; import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.store.IndexStoreModule; -import org.elasticsearch.index.translog.TranslogConfig; -import org.elasticsearch.index.translog.TranslogWriter; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService;