Relax assertSameDocIdsOnShards assertion
If the checking node no longer holds the shard copy, the assertion assertSameDocIdsOnShards might fail. This is too harsh since the assertion is to ensure the consistency between active copies.
This commit is contained in:
parent
15aa3764a4
commit
1e3702da0b
|
@ -139,7 +139,6 @@ import java.util.concurrent.Future;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -1293,26 +1292,24 @@ public final class InternalTestCluster extends TestCluster {
|
|||
}
|
||||
}
|
||||
|
||||
private IndexShard getShardOrNull(ClusterState clusterState, ShardRouting shardRouting) {
|
||||
if (shardRouting == null || shardRouting.assignedToNode() == false) {
|
||||
return null;
|
||||
}
|
||||
final DiscoveryNode assignedNode = clusterState.nodes().get(shardRouting.currentNodeId());
|
||||
if (assignedNode == null) {
|
||||
return null;
|
||||
}
|
||||
return getInstance(IndicesService.class, assignedNode.getName()).getShardOrNull(shardRouting.shardId());
|
||||
}
|
||||
|
||||
public void assertSeqNos() throws Exception {
|
||||
final BiFunction<ClusterState, ShardRouting, IndexShard> getInstanceShardInstance = (clusterState, shardRouting) -> {
|
||||
if (shardRouting.assignedToNode() == false) {
|
||||
return null;
|
||||
}
|
||||
final DiscoveryNode assignedNode = clusterState.nodes().get(shardRouting.currentNodeId());
|
||||
if (assignedNode == null) {
|
||||
return null;
|
||||
}
|
||||
return getInstance(IndicesService.class, assignedNode.getName()).getShardOrNull(shardRouting.shardId());
|
||||
};
|
||||
assertBusy(() -> {
|
||||
final ClusterState state = clusterService().state();
|
||||
for (ObjectObjectCursor<String, IndexRoutingTable> indexRoutingTable : state.routingTable().indicesRouting()) {
|
||||
for (IntObjectCursor<IndexShardRoutingTable> indexShardRoutingTable : indexRoutingTable.value.shards()) {
|
||||
ShardRouting primaryShardRouting = indexShardRoutingTable.value.primaryShard();
|
||||
if (primaryShardRouting == null) {
|
||||
continue;
|
||||
}
|
||||
final IndexShard primaryShard = getInstanceShardInstance.apply(state, primaryShardRouting);
|
||||
final IndexShard primaryShard = getShardOrNull(state, primaryShardRouting);
|
||||
if (primaryShard == null) {
|
||||
continue; //just ignore - shard movement
|
||||
}
|
||||
|
@ -1327,7 +1324,7 @@ public final class InternalTestCluster extends TestCluster {
|
|||
assertThat(primaryShardRouting + " should have set the global checkpoint",
|
||||
primarySeqNoStats.getGlobalCheckpoint(), not(equalTo(SequenceNumbers.UNASSIGNED_SEQ_NO)));
|
||||
for (ShardRouting replicaShardRouting : indexShardRoutingTable.value.replicaShards()) {
|
||||
final IndexShard replicaShard = getInstanceShardInstance.apply(state, replicaShardRouting);
|
||||
final IndexShard replicaShard = getShardOrNull(state, replicaShardRouting);
|
||||
if (replicaShard == null) {
|
||||
continue; //just ignore - shard movement
|
||||
}
|
||||
|
@ -1356,12 +1353,10 @@ public final class InternalTestCluster extends TestCluster {
|
|||
for (ObjectObjectCursor<String, IndexRoutingTable> indexRoutingTable : state.routingTable().indicesRouting()) {
|
||||
for (IntObjectCursor<IndexShardRoutingTable> indexShardRoutingTable : indexRoutingTable.value.shards()) {
|
||||
ShardRouting primaryShardRouting = indexShardRoutingTable.value.primaryShard();
|
||||
if (primaryShardRouting == null || primaryShardRouting.assignedToNode() == false) {
|
||||
IndexShard primaryShard = getShardOrNull(state, primaryShardRouting);
|
||||
if (primaryShard == null) {
|
||||
continue;
|
||||
}
|
||||
DiscoveryNode primaryNode = state.nodes().get(primaryShardRouting.currentNodeId());
|
||||
IndexShard primaryShard = getInstance(IndicesService.class, primaryNode.getName())
|
||||
.indexServiceSafe(primaryShardRouting.index()).getShard(primaryShardRouting.id());
|
||||
final List<DocIdSeqNoAndTerm> docsOnPrimary;
|
||||
try {
|
||||
docsOnPrimary = IndexShardTestCase.getDocIdAndSeqNos(primaryShard);
|
||||
|
@ -1369,12 +1364,10 @@ public final class InternalTestCluster extends TestCluster {
|
|||
continue;
|
||||
}
|
||||
for (ShardRouting replicaShardRouting : indexShardRoutingTable.value.replicaShards()) {
|
||||
if (replicaShardRouting.assignedToNode() == false) {
|
||||
IndexShard replicaShard = getShardOrNull(state, replicaShardRouting);
|
||||
if (replicaShard == null) {
|
||||
continue;
|
||||
}
|
||||
DiscoveryNode replicaNode = state.nodes().get(replicaShardRouting.currentNodeId());
|
||||
IndexShard replicaShard = getInstance(IndicesService.class, replicaNode.getName())
|
||||
.indexServiceSafe(replicaShardRouting.index()).getShard(replicaShardRouting.id());
|
||||
final List<DocIdSeqNoAndTerm> docsOnReplica;
|
||||
try {
|
||||
docsOnReplica = IndexShardTestCase.getDocIdAndSeqNos(replicaShard);
|
||||
|
|
Loading…
Reference in New Issue