[ https://issues.apache.org/jira/browse/YARN-10532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267022#comment-17267022 ]
zhuqi commented on YARN-10532: ------------------------------ The latest patch support: For old auto created leaf queue deletion: 1. Support policy based auto deletion for expired queue: For old auto created leaf queue: 1.1 Support GuaranteedOrZeroCapacityOverTimePolicy based deletion : {code:java} long lastActive = getLeafQueueState(leafQueue, nodeLabel).getMostRecentActivationTime(); long lastDeactive = getLeafQueueState(leafQueue, nodeLabel).getMostRecentDeactivationTime(); // Check if need delete when expired. if (lastActive >= lastDeactive || (lastDeactive - lastActive)/1000 <= scheduler.getConfiguration(). getAutoExpiredDeletionTime(managedParentQueue.getQueuePath()) || leafQueue.getAllApplications().size() > 0) { isExpired = false; } {code} For new auto created leaf queue: {code:java} private synchronized void computeDynamicLeafQueueChanges(LeafQueue leafQueue) throws SchedulerDynamicEditException { // Expired queue, when there are no running in leafQueue // and the last submit time has been expired // Delete queue when expired deletion enabled. ParentQueue parentQueue = (ParentQueue) leafQueue.getParent(); if (parentQueue == null) { throw new SchedulerDynamicEditException("Parent " + "queue should not be null for auto deletion!"); } long idleDuration = (System.currentTimeMillis() - leafQueue.getLastSubmittedTimestamp())/1000; if (leafQueue.getAllApplications().size() ==0 && idleDuration > this.getConfiguration() .getAutoExpiredDeletionTime(leafQueue.getParent().getQueuePath()) && this.getConfiguration(). isAutoExpiredDeletionEnabled(leafQueue.getParent().getQueuePath())){ LeafQueue removed = parentQueue. removeDynamicLeafQueue(leafQueue.getQueuePath()); if (removed != null) { this.getCapacitySchedulerQueueManager(). removeQueue(leafQueue.getQueuePath()); } } } {code} 2. Support policy not enabled with Reinitialize update deletion: {code:java} private void updateQueues(CSQueueStore existingQueues, CSQueueStore newQueues) { CapacitySchedulerConfiguration conf = csContext.getConfiguration(); for (CSQueue queue : newQueues.getQueues()) { if (existingQueues.get(queue.getQueuePath()) == null) { existingQueues.add(queue); } } for (CSQueue queue : existingQueues.getQueues()) { // should also support for auto created for expired deletion // 1. handle old auto created deletion for reinitializeQueues // 2. handle new auto created deletion for reinitializeQueues if ((queue.getParent() != null && queue instanceof AutoCreatedLeafQueue && conf.isAutoExpiredDeletionEnabled(queue.getParent().getQueuePath()) && (newQueues.get(queue.getQueuePath())) == null && ((AutoCreatedLeafQueue) queue).isExpiredQueue()) || (queue.getParent() != null && queue instanceof LeafQueue && ((LeafQueue) queue).isDynamicQueue() && conf.isAutoExpiredDeletionEnabled(queue.getParent().getQueuePath()) && (newQueues.get(queue.getQueuePath())) == null && ((System.currentTimeMillis() - ((LeafQueue)queue).getLastSubmittedTimestamp()) > conf.getAutoExpiredDeletionTime(queue.getParent().getQueuePath())) && ((LeafQueue)queue).getAllApplications().size() == 0) || !((AbstractCSQueue) queue).isDynamicQueue() && newQueues.get( queue.getQueuePath()) == null && !( queue instanceof AutoCreatedLeafQueue && conf .isAutoCreateChildQueueEnabled( queue.getParent().getQueuePath()))) { existingQueues.remove(queue); } } {code} Other remaining to do: # If we need to support auto deletion also for parent queues. # I will deep into more details about all the corner cases. > Capacity Scheduler Auto Queue Creation: Allow auto delete queue when queue is > not being used > -------------------------------------------------------------------------------------------- > > Key: YARN-10532 > URL: https://issues.apache.org/jira/browse/YARN-10532 > Project: Hadoop YARN > Issue Type: Sub-task > Reporter: Wangda Tan > Assignee: zhuqi > Priority: Major > Attachments: YARN-10532.001.patch, YARN-10532.002.patch, > YARN-10532.003.patch > > > It's better if we can delete auto-created queues when they are not in use for > a period of time (like 5 mins). It will be helpful when we have a large > number of auto-created queues (e.g. from 500 users), but only a small subset > of queues are actively used. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org