public void aggregate(ServingStatusAggregator other) { for (Map.Entry<Domain, Map<Integer, ServingStatus>> entry1 : other.domainToPartitionToPartitionServingStatus.entrySet()) { Domain domain = entry1.getKey(); for (Map.Entry<Integer, ServingStatus> entry2 : entry1.getValue().entrySet()) { Integer partitionNumber = entry2.getKey(); ServingStatus partitionServingStatus = entry2.getValue(); ServingStatus partitionServingStatusAggregate = getPartitionServingStatus(domain, partitionNumber); partitionServingStatusAggregate.aggregate(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; } }