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; } }
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; }
protected DomainGroupDeployStatusForRingGroup getDomainGroupDeployStatusForRingGroup(RingGroup ringGroup) throws IOException { DomainGroupDeployStatusForRingGroup status = new DomainGroupDeployStatusForRingGroup(); status.ringGroupName = ringGroup.getName(); ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, ringGroup.getDomainGroup()).computeServingStatus(); status.numPartitions = servingStatus.getNumPartitions(); status.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); return status; }
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 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; }
private DomainDeployStatusForRingGroup getDomainDeployStatusForRingGroup(DomainGroup domainGroup, Domain domain, RingGroup ringGroup) throws IOException { DomainDeployStatusForRingGroup status = new DomainDeployStatusForRingGroup(); status.ringGroupName = ringGroup.getName(); if (domainGroup != null) { status.targetDomainVersion = domainGroup.getDomainVersion(domain) == null ? null : domainGroup.getDomainVersion(domain).getVersionNumber(); } ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, domainGroup).computeServingStatus(); status.numPartitions = servingStatus.getNumPartitions(); status.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); return status; }
protected RingGroupData getRingGroupData(RingGroup ringGroup) throws IOException { RingGroupData data = new RingGroupData(); data.name = ringGroup.getName(); data.isRingGroupConductorOnline = ringGroup.isRingGroupConductorOnline(); data.ringGroupConductorMode = ringGroup.getRingGroupConductorMode(); data.domainGroupName = ringGroup.getDomainGroup().getName(); ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, ringGroup.getDomainGroup()).computeServingStatus(); data.numPartitions = servingStatus.getNumPartitions(); data.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); Map<Integer, RingData> ringsMap = new HashMap<Integer, RingData>(); for (Ring ring : ringGroup.getRings()) { ringsMap.put(ring.getRingNumber(), getRingData(ring)); } data.ringsMap = ringsMap; data.clients = Maps.newHashMap(); for (ClientMetadata clientData : ringGroup.getClients()) { data.clients.put(clientData.get_host(), new ConnectedHostData( clientData.get_host(), Long.toString(clientData.get_connected_at()), clientData.get_type(), clientData.get_version() )); } return data; }