@Override public void reinitializeQueues(CapacitySchedulerConfiguration newConf) throws IOException { // Parse new queues Map<String, CSQueue> newQueues = new HashMap<>(); CSQueue newRoot = parseQueue(this.csContext, newConf, null, CapacitySchedulerConfiguration.ROOT, newQueues, queues, NOOP); // When failing over, if using configuration store, don't validate queue // hierarchy since queues can be removed without being STOPPED. if (!csContext.isConfigurationMutable() || csContext.getRMContext().getHAServiceState() != HAServiceProtocol.HAServiceState.STANDBY) { // Ensure queue hierarchy in the new XML file is proper. validateQueueHierarchy(queues, newQueues); } // Add new queues and delete OldQeueus only after validation. updateQueues(queues, newQueues); // Re-configure queues root.reinitialize(newRoot, this.csContext.getClusterResource()); setQueueAcls(authorizer, appPriorityACLManager, queues); // Re-calculate headroom for active applications Resource clusterResource = this.csContext.getClusterResource(); root.updateClusterResource(clusterResource, new ResourceLimits( clusterResource)); labelManager.reinitializeQueueLabels(getQueueToLabels()); this.queueStateManager.initialize(this); }