public ServingStatus getPartitionServingStatus(Domain domain, int partitionNumber) { Map<Integer, ServingStatus> partitionToPartitionServingStatus = domainToPartitionToPartitionServingStatus.get(domain); if (partitionToPartitionServingStatus == null) { partitionToPartitionServingStatus = new HashMap<Integer, ServingStatus>(); domainToPartitionToPartitionServingStatus.put(domain, partitionToPartitionServingStatus); } ServingStatus partitionServingStatus = partitionToPartitionServingStatus.get(partitionNumber); if (partitionServingStatus == null) { partitionServingStatus = new ServingStatus(); partitionToPartitionServingStatus.put(partitionNumber, partitionServingStatus); } return partitionServingStatus; }
public ServingStatus computeServingStatus() { ServingStatus result = new ServingStatus(); for (Map.Entry<Domain, Map<Integer, ServingStatus>> entry1 : domainToPartitionToPartitionServingStatus.entrySet()) { for (Map.Entry<Integer, ServingStatus> entry2 : entry1.getValue().entrySet()) { ServingStatus partitionServingStatus = entry2.getValue(); result.aggregate(partitionServingStatus); } } return result; }
public ServingStatus computeUniquePartitionsServingStatus(DomainGroup domainGroup) throws IOException { ServingStatus result = new ServingStatus(); for (DomainAndVersion dgvdv : domainGroup.getDomainVersions()) { Domain domain = dgvdv.getDomain(); Map<Integer, ServingStatus> partitionToServingStatus = domainToPartitionToPartitionServingStatus.get(domain); int partitionsServedAndUpToDate = 0; if (partitionToServingStatus != null) { for (ServingStatus servingStatus : partitionToServingStatus.values()) { // A unique partition is served and up to date if all host corresponding domain partitions are // served and up to date if (servingStatus.getNumPartitionsServedAndUpToDate() == servingStatus.getNumPartitions()) { partitionsServedAndUpToDate += 1; } } } result.aggregate(domain.getNumParts(), partitionToServingStatus == null ? 0 : partitionsServedAndUpToDate); } return result; } }