storm-server/src/main/java/org/apache/storm/scheduler/resource/strategies/scheduling/sorter/NodeSorterHostProximity.java [191:225]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            final ExistingScheduleFunc existingScheduleFunc) {
        // Copy and modify allResources
        ObjectResourcesSummary affinityBasedAllResources = new ObjectResourcesSummary(allResources);
        final NormalizedResourceOffer availableResourcesOverall = allResources.getAvailableResourcesOverall();
        final NormalizedResourceRequest requestedResources = (exec != null) ? topologyDetails.getTotalResources(exec) : null;
        affinityBasedAllResources.getObjectResources().forEach(
            x -> {
                if (requestedResources != null) {
                    // negate unrequested resources
                    x.availableResources.updateForRareResourceAffinity(requestedResources);
                }
                x.minResourcePercent = availableResourcesOverall.calculateMinPercentageUsedBy(x.availableResources);
                x.avgResourcePercent = availableResourcesOverall.calculateAveragePercentageUsedBy(x.availableResources);

                LOG.trace("for {}: minResourcePercent={}, avgResourcePercent={}, numExistingSchedule={}",
                        x.id, x.minResourcePercent, x.avgResourcePercent,
                        existingScheduleFunc.getNumExistingSchedule(x.id));
            }
        );

        // Use the following comparator to sort
        Comparator<ObjectResourcesItem> comparator = (o1, o2) -> {
            int execsScheduled1 = existingScheduleFunc.getNumExistingSchedule(o1.id);
            int execsScheduled2 = existingScheduleFunc.getNumExistingSchedule(o2.id);
            if (execsScheduled1 > execsScheduled2) {
                return -1;
            } else if (execsScheduled1 < execsScheduled2) {
                return 1;
            }
            double o1Avg = o1.avgResourcePercent;
            double o2Avg = o2.avgResourcePercent;
            if (o1Avg > o2Avg) {
                return -1;
            } else if (o1Avg < o2Avg) {
                return 1;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



storm-server/src/main/java/org/apache/storm/scheduler/resource/strategies/scheduling/sorter/NodeSorterHostProximity.java [265:297]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            final ExistingScheduleFunc existingScheduleFunc) {
        ObjectResourcesSummary affinityBasedAllResources = new ObjectResourcesSummary(allResources);
        final NormalizedResourceOffer availableResourcesOverall = allResources.getAvailableResourcesOverall();
        final NormalizedResourceRequest requestedResources = (exec != null) ? topologyDetails.getTotalResources(exec) : null;
        affinityBasedAllResources.getObjectResources().forEach(
            x -> {
                if (requestedResources != null) {
                    // negate unrequested resources
                    x.availableResources.updateForRareResourceAffinity(requestedResources);
                }
                x.minResourcePercent = availableResourcesOverall.calculateMinPercentageUsedBy(x.availableResources);
                x.avgResourcePercent = availableResourcesOverall.calculateAveragePercentageUsedBy(x.availableResources);

                LOG.trace("for {}: minResourcePercent={}, avgResourcePercent={}, numExistingSchedule={}",
                    x.id, x.minResourcePercent, x.avgResourcePercent,
                    existingScheduleFunc.getNumExistingSchedule(x.id));
            }
        );

        Comparator<ObjectResourcesItem> comparator = (o1, o2) -> {
            int execsScheduled1 = existingScheduleFunc.getNumExistingSchedule(o1.id);
            int execsScheduled2 = existingScheduleFunc.getNumExistingSchedule(o2.id);
            if (execsScheduled1 > execsScheduled2) {
                return -1;
            } else if (execsScheduled1 < execsScheduled2) {
                return 1;
            }
            double o1Avg = o1.avgResourcePercent;
            double o2Avg = o2.avgResourcePercent;
            if (o1Avg > o2Avg) {
                return -1;
            } else if (o1Avg < o2Avg) {
                return 1;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



