// Create ReplicaEntity from Query.Replica and add it to this node. public ReplicaEntity AddReplica(Replica replica) { ReplicaEntity replicaEntity = new ReplicaEntity(replica, this); this.ReplicaList.Add(replicaEntity); return(replicaEntity); }
private bool SelectReadySecondary(ReplicaEntity replica) { var statefulReplica = replica.Replica as StatefulServiceReplica; ReleaseAssert.AssertIf(statefulReplica == null, "Replica type should be stateful"); return(statefulReplica.ReplicaRole == ReplicaRole.ActiveSecondary && replica.IsAvailableToFault); }
public CodePackageEntity GetCodePackagEntityForReplica(ReplicaEntity replicaEntity) { CodePackageEntity codePackageEntity = null; var codePackagesOnNode = this.CodePackages.Where(cp => cp.NodeName == replicaEntity.Replica.NodeName); foreach (var codePackage in codePackagesOnNode) { var partitionEntity = codePackage.DeployedPartitions.FirstOrDefault(p => (p.Guid == replicaEntity.ParentPartitionEntity.Guid)); if (partitionEntity != null) { codePackageEntity = codePackage; } } return(codePackageEntity); }
private void MarkPartitionAsUnsafe(PartitionEntity partitionEntity) { foreach (var r in partitionEntity.ReplicaList) { ReplicaEntity replica = r; var currentReplicaCodePackage = partitionEntity.ParentServiceEntity.ParentApplicationEntity.GetCodePackagEntityForReplica(replica); if (currentReplicaCodePackage != null) { currentReplicaCodePackage.MarkCodePackageAsUnsafeToFault(); } var clusterNode = partitionEntity.ParentServiceEntity.ParentApplicationEntity.ClusterSnapshot.Nodes.FindMatchingNodeEntity(replica.Replica.NodeName); if (clusterNode != null) { clusterNode.MarkNodeAsUnsafeToFault(); } replica.MarkReplicaAsUnsafeToFault(); } }