@Override public void schedule(Topologies topologies, Cluster cluster) { LOG.debug("running Black List scheduler"); LOG.debug("AssignableSlots: {}", cluster.getAssignableSlots()); LOG.debug("AvailableSlots: {}", cluster.getAvailableSlots()); LOG.debug("UsedSlots: {}", cluster.getUsedSlots()); Map<String, SupervisorDetails> supervisors = cluster.getSupervisors(); blacklistStrategy.resumeFromBlacklist(); badSupervisors(supervisors); Set<String> blacklistHosts = getBlacklistHosts(cluster, topologies); this.blacklistHost = blacklistHosts; cluster.setBlacklistedHosts(blacklistHosts); removeLongTimeDisappearFromCache(); underlyingScheduler.schedule(topologies, cluster); }
DefaultScheduler.defaultSchedule(leftOverTopologies, cluster); cluster.setBlacklistedHosts(origBlacklist);
private void updateChanges(Cluster cluster, Topologies topologies) { //Cannot simply set this.cluster=schedulingState.cluster since clojure is immutable cluster.setAssignments(schedulingState.cluster.getAssignments()); cluster.setBlacklistedHosts(schedulingState.cluster.getBlacklistedHosts()); cluster.setStatusMap(schedulingState.cluster.getStatusMap()); cluster.setSupervisorsResourcesMap(schedulingState.cluster.getSupervisorsResourcesMap()); cluster.setTopologyResourcesMap(schedulingState.cluster.getTopologyResourcesMap()); cluster.setWorkerResourcesMap(schedulingState.cluster.getWorkerResourcesMap()); //updating resources used by supervisor updateSupervisorsResources(cluster, topologies); }