Add recovery source to ShardRouting
Relates to elastic/elasticsearchelastic/elasticsearch#19516 Original commit: elastic/x-pack-elasticsearch@051fb25bfc
This commit is contained in:
parent
40c2672f12
commit
cdc41f6082
|
@ -119,14 +119,7 @@ public class IndexRecoveryCollectorTests extends AbstractCollectorTestCase {
|
||||||
List<RecoveryState> shardRecoveries = shard.getValue();
|
List<RecoveryState> shardRecoveries = shard.getValue();
|
||||||
assertNotNull(shardRecoveries);
|
assertNotNull(shardRecoveries);
|
||||||
assertThat(shardRecoveries.size(), greaterThan(0));
|
assertThat(shardRecoveries.size(), greaterThan(0));
|
||||||
|
assertThat(shard.getKey(), equalTo(indexName));
|
||||||
for (RecoveryState shardRecovery : shardRecoveries) {
|
|
||||||
assertThat(shard.getKey(), equalTo(indexName));
|
|
||||||
assertThat(shardRecovery.getType(), anyOf(equalTo(RecoveryState.Type.PRIMARY_RELOCATION),
|
|
||||||
equalTo(RecoveryState.Type.STORE),
|
|
||||||
equalTo(RecoveryState.Type.REPLICA),
|
|
||||||
equalTo(RecoveryState.Type.SNAPSHOT)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
||||||
import org.elasticsearch.cluster.ClusterName;
|
import org.elasticsearch.cluster.ClusterName;
|
||||||
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
@ -138,8 +139,8 @@ public class ClusterStatsResolverTests extends MonitoringIndexNameResolverTestCa
|
||||||
private ShardStats[] randomShardStats() {
|
private ShardStats[] randomShardStats() {
|
||||||
Index index = new Index("test", UUID.randomUUID().toString());
|
Index index = new Index("test", UUID.randomUUID().toString());
|
||||||
Path shardPath = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
Path shardPath = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(index, 0), null, false,
|
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(index, 0), false,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "foo"));
|
RecoverySource.PeerRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "foo"));
|
||||||
CommonStats shardCommonStats = new CommonStats();
|
CommonStats shardCommonStats = new CommonStats();
|
||||||
shardCommonStats.fieldData = new FieldDataStats();
|
shardCommonStats.fieldData = new FieldDataStats();
|
||||||
shardCommonStats.queryCache = new QueryCacheStats();
|
shardCommonStats.queryCache = new QueryCacheStats();
|
||||||
|
|
|
@ -8,6 +8,10 @@ package org.elasticsearch.xpack.monitoring.agent.resolver.indices;
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.action.admin.indices.recovery.RecoveryResponse;
|
import org.elasticsearch.action.admin.indices.recovery.RecoveryResponse;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
|
import org.elasticsearch.cluster.routing.ShardRoutingState;
|
||||||
|
import org.elasticsearch.cluster.routing.TestShardRouting;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
|
@ -36,8 +40,9 @@ public class IndexRecoveryResolverTests extends MonitoringIndexNameResolverTestC
|
||||||
|
|
||||||
DiscoveryNode localNode = new DiscoveryNode("foo", LocalTransportAddress.buildUnique(), emptyMap(), emptySet(), Version.CURRENT);
|
DiscoveryNode localNode = new DiscoveryNode("foo", LocalTransportAddress.buildUnique(), emptyMap(), emptySet(), Version.CURRENT);
|
||||||
Map<String, java.util.List<RecoveryState>> shardRecoveryStates = new HashMap<>();
|
Map<String, java.util.List<RecoveryState>> shardRecoveryStates = new HashMap<>();
|
||||||
shardRecoveryStates.put("test", Collections.singletonList(new RecoveryState(new ShardId("test", "uuid", 0), true,
|
ShardRouting shardRouting = TestShardRouting.newShardRouting(new ShardId("test", "uuid", 0), localNode.getId(), true,
|
||||||
RecoveryState.Type.STORE, localNode, localNode)));
|
ShardRoutingState.INITIALIZING, RecoverySource.StoreRecoverySource.EXISTING_STORE_INSTANCE);
|
||||||
|
shardRecoveryStates.put("test", Collections.singletonList(new RecoveryState(shardRouting, localNode, null)));
|
||||||
doc.setRecoveryResponse(new RecoveryResponse(10, 10, 0, false, shardRecoveryStates, Collections.emptyList()));
|
doc.setRecoveryResponse(new RecoveryResponse(10, 10, 0, false, shardRecoveryStates, Collections.emptyList()));
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.elasticsearch.action.admin.indices.stats.CommonStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndexStats;
|
import org.elasticsearch.action.admin.indices.stats.IndexStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
|
@ -80,7 +81,7 @@ public class IndexStatsResolverTests extends MonitoringIndexNameResolverTestCase
|
||||||
Index index = new Index("test-" + randomIntBetween(0, 5), UUID.randomUUID().toString());
|
Index index = new Index("test-" + randomIntBetween(0, 5), UUID.randomUUID().toString());
|
||||||
ShardId shardId = new ShardId(index, 0);
|
ShardId shardId = new ShardId(index, 0);
|
||||||
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, null, true,
|
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, true, RecoverySource.StoreRecoverySource.EMPTY_STORE_INSTANCE,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
||||||
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponseTestUtils;
|
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponseTestUtils;
|
||||||
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
|
@ -87,7 +88,7 @@ public class IndicesStatsResolverTests extends MonitoringIndexNameResolverTestCa
|
||||||
for (int i=0; i < randomIntBetween(2, 5); i++) {
|
for (int i=0; i < randomIntBetween(2, 5); i++) {
|
||||||
ShardId shardId = new ShardId(index, i);
|
ShardId shardId = new ShardId(index, i);
|
||||||
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve(String.valueOf(i));
|
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve(String.valueOf(i));
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, null, true,
|
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, true, RecoverySource.StoreRecoverySource.EMPTY_STORE_INSTANCE,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
||||||
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.elasticsearch.action.admin.indices.stats.CommonStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndexShardStats;
|
import org.elasticsearch.action.admin.indices.stats.IndexShardStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
|
@ -105,7 +106,7 @@ public class NodeStatsResolverTests extends MonitoringIndexNameResolverTestCase<
|
||||||
Index index = new Index("test-" + randomIntBetween(0, 5), UUID.randomUUID().toString());
|
Index index = new Index("test-" + randomIntBetween(0, 5), UUID.randomUUID().toString());
|
||||||
ShardId shardId = new ShardId(index, 0);
|
ShardId shardId = new ShardId(index, 0);
|
||||||
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
Path path = createTempDir().resolve("indices").resolve(index.getUUID()).resolve("0");
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, null, true,
|
ShardRouting shardRouting = ShardRouting.newUnassigned(shardId, true, RecoverySource.StoreRecoverySource.EMPTY_STORE_INSTANCE,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
||||||
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
|
|
|
@ -7,7 +7,10 @@ package org.elasticsearch.xpack.monitoring.agent.resolver.shards;
|
||||||
|
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
|
import org.elasticsearch.cluster.routing.RecoverySource;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
|
import org.elasticsearch.cluster.routing.ShardRoutingState;
|
||||||
|
import org.elasticsearch.cluster.routing.TestShardRouting;
|
||||||
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
import org.elasticsearch.cluster.routing.UnassignedInfo;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
|
@ -33,8 +36,9 @@ public class ShardsResolverTests extends MonitoringIndexNameResolverTestCase<Sha
|
||||||
doc.setClusterStateUUID(UUID.randomUUID().toString());
|
doc.setClusterStateUUID(UUID.randomUUID().toString());
|
||||||
doc.setSourceNode(new DiscoveryNode("id", LocalTransportAddress.buildUnique(), emptyMap(), emptySet(), Version.CURRENT));
|
doc.setSourceNode(new DiscoveryNode("id", LocalTransportAddress.buildUnique(), emptyMap(), emptySet(), Version.CURRENT));
|
||||||
|
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(new Index(randomAsciiOfLength(5), UUID.randomUUID().toString()),
|
ShardRouting shardRouting = TestShardRouting.newShardRouting(
|
||||||
randomIntBetween(0, 5)), null, randomBoolean(), new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
new ShardId(new Index(randomAsciiOfLength(5), UUID.randomUUID().toString()), randomIntBetween(0, 5)),
|
||||||
|
null, randomBoolean(), ShardRoutingState.UNASSIGNED);
|
||||||
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize("node-0", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
shardRouting = shardRouting.relocate("node-1", ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.relocate("node-1", ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
|
@ -72,8 +76,8 @@ public class ShardsResolverTests extends MonitoringIndexNameResolverTestCase<Sha
|
||||||
final String sourceNode = "node-" + randomIntBetween(0, 5);
|
final String sourceNode = "node-" + randomIntBetween(0, 5);
|
||||||
final String relocationNode = "node-" + randomIntBetween(6, 10);
|
final String relocationNode = "node-" + randomIntBetween(6, 10);
|
||||||
|
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(new Index(index, ""), shardId), null, primary,
|
ShardRouting shardRouting = TestShardRouting.newShardRouting(new ShardId(new Index(index, ""), shardId),
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
null, primary, ShardRoutingState.UNASSIGNED);
|
||||||
shardRouting = shardRouting.initialize(sourceNode, null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize(sourceNode, null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
shardRouting = shardRouting.relocate(relocationNode, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.relocate(relocationNode, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
|
@ -99,8 +103,8 @@ public class ShardsResolverTests extends MonitoringIndexNameResolverTestCase<Sha
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testShardId() {
|
public void testShardId() {
|
||||||
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(new Index("bar", ""), 42), null, false,
|
ShardRouting shardRouting = ShardRouting.newUnassigned(new ShardId(new Index("bar", ""), 42), false,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
RecoverySource.PeerRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, null));
|
||||||
assertThat(ShardsResolver.id("foo", shardRouting), equalTo("foo:_na:bar:42:r"));
|
assertThat(ShardsResolver.id("foo", shardRouting), equalTo("foo:_na:bar:42:r"));
|
||||||
shardRouting = shardRouting.initialize("node1", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
shardRouting = shardRouting.initialize("node1", null, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE);
|
||||||
shardRouting = shardRouting.moveToStarted();
|
shardRouting = shardRouting.moveToStarted();
|
||||||
|
|
|
@ -103,7 +103,7 @@ public class TriggeredWatchStoreTests extends ESTestCase {
|
||||||
}
|
}
|
||||||
ShardId shardId = new ShardId(index, 0);
|
ShardId shardId = new ShardId(index, 0);
|
||||||
indexRoutingTableBuilder.addIndexShard(new IndexShardRoutingTable.Builder(shardId)
|
indexRoutingTableBuilder.addIndexShard(new IndexShardRoutingTable.Builder(shardId)
|
||||||
.addShard(TestShardRouting.newShardRouting(shardId, "_node_id", null, null, true, state,
|
.addShard(TestShardRouting.newShardRouting(shardId, "_node_id", null, true, state,
|
||||||
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "")))
|
new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "")))
|
||||||
.build());
|
.build());
|
||||||
indexRoutingTableBuilder.addReplica();
|
indexRoutingTableBuilder.addReplica();
|
||||||
|
|
|
@ -108,7 +108,7 @@ public class WatchStoreTests extends ESTestCase {
|
||||||
final Index index = metaDateBuilder.get(WatchStore.INDEX).getIndex();
|
final Index index = metaDateBuilder.get(WatchStore.INDEX).getIndex();
|
||||||
IndexRoutingTable.Builder indexRoutingTableBuilder = IndexRoutingTable.builder(index);
|
IndexRoutingTable.Builder indexRoutingTableBuilder = IndexRoutingTable.builder(index);
|
||||||
indexRoutingTableBuilder.addIndexShard(new IndexShardRoutingTable.Builder(new ShardId(index, 0))
|
indexRoutingTableBuilder.addIndexShard(new IndexShardRoutingTable.Builder(new ShardId(index, 0))
|
||||||
.addShard(TestShardRouting.newShardRouting(WatchStore.INDEX, 0, "_node_id", null, null, true,
|
.addShard(TestShardRouting.newShardRouting(WatchStore.INDEX, 0, "_node_id", null, true,
|
||||||
ShardRoutingState.UNASSIGNED, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "")))
|
ShardRoutingState.UNASSIGNED, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "")))
|
||||||
.build());
|
.build());
|
||||||
indexRoutingTableBuilder.addReplica();
|
indexRoutingTableBuilder.addReplica();
|
||||||
|
|
Loading…
Reference in New Issue