[ 
https://issues.apache.org/jira/browse/YARN-11041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17733593#comment-17733593
 ] 

ASF GitHub Bot commented on YARN-11041:
---------------------------------------

p-szucs commented on code in PR #5332:
URL: https://github.com/apache/hadoop/pull/5332#discussion_r1232482290


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/AutoCreatedQueueTemplate.java:
##########
@@ -154,46 +148,26 @@ public void 
setTemplateEntriesForChild(CapacitySchedulerConfiguration conf,
    */
   private void setTemplateConfigEntries(CapacitySchedulerConfiguration 
configuration,
                                         QueuePath queuePath) {
-    ConfigurationProperties configurationProperties =
-        configuration.getConfigurationProperties();
-
-    List<String> queuePathParts = Lists.newArrayList(queuePath.iterator());
-
-    if (queuePathParts.size() <= 1 && !queuePath.isRoot()) {
-      // This is an invalid queue path
-      return;
-    }
-    int queuePathMaxIndex = queuePathParts.size() - 1;
-
-    // start with the most explicit format (without wildcard)
-    int wildcardLevel = 0;
-    // root can not be wildcarded
-    int supportedWildcardLevel = Math.min(queuePathMaxIndex,
-            
configuration.getMaximumAutoCreatedQueueDepth(queuePath.getFullPath()));
-    // Allow root to have template properties
-    if (queuePath.isRoot()) {
-      supportedWildcardLevel = 0;
-    }
-
-    // Collect all template entries
-    while (wildcardLevel <= supportedWildcardLevel) {
-      String templateQueuePath = String.join(".", queuePathParts);
-      // Get all configuration entries with
-      // yarn.scheduler.capacity.<queuePath> prefix
-      Map<String, String> queueProps = configurationProperties
-          .getPropertiesWithPrefix(getQueuePrefix(templateQueuePath));
-
-      // Store template, parent-template and leaf-template properties
-      for (Map.Entry<String, String> entry : queueProps.entrySet()) {
-        storeConfiguredTemplates(entry.getKey(), entry.getValue());
+    if (!queuePath.isInvalid()) {
+      ConfigurationProperties configurationProperties =
+          configuration.getConfigurationProperties();
+
+      int maxAutoCreatedQueueDepth = configuration
+          .getMaximumAutoCreatedQueueDepth(queuePath);
+      List<QueuePath> wildcardedQueuePaths =
+          queuePath.getWildcardedQueuePaths(maxAutoCreatedQueueDepth);
+
+      for (QueuePath templateQueuePath: wildcardedQueuePaths) {
+        // Get all configuration entries with
+        // yarn.scheduler.capacity.<queuePath> prefix
+        Map<String, String> queueProps = configurationProperties
+            .getPropertiesWithPrefix(getQueuePrefix(templateQueuePath));
+
+        // Store template, parent-template and leaf-template properties
+        for (Map.Entry<String, String> entry : queueProps.entrySet()) {
+          storeConfiguredTemplates(entry.getKey(), entry.getValue());
+        }

Review Comment:
   I extended the tests with cases when autoCreatedQueueDepth config is not the 
default value, but its limited. It could also affect how deep we should check 
the wildcarded template properties for a queue path. Added one test case with 
invalid queue path too.





> Replace all occurences of queuePath with the new QueuePath class - followup
> ---------------------------------------------------------------------------
>
>                 Key: YARN-11041
>                 URL: https://issues.apache.org/jira/browse/YARN-11041
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: capacity scheduler
>            Reporter: Tibor Kovács
>            Assignee: Peter Szucs
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.4.0
>
>
> The QueuePath class was introduced in YARN-10897, however, its current 
> adoption happened only for code changes after this JIRA. We need to adopt it 
> retrospectively.
>  
> A lot of changes are introduced via ticket YARN-10982. The replacing should 
> be continued by touching the next comments:
>  
> [...g/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/AutoCreatedQueueTemplate.java|https://github.com/apache/hadoop/pull/3660/files/f956918bc154d0e35fce07c5dd8be804eb007acc#diff-fde6885144b59bb06b2c3358780388d958829b13f68aceee7bb6d394bb5e0548]
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765012937]
> I think this could be also refactored in a follow-up jira so the string magic 
> could probably be replaced with some more elegant solution. Though, I think 
> this would be too much in this patch, hence I do suggest the follow-up jira.|
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765013096]
> [~bteke] [ |https://github.com/9uapaw] [~gandras] [ 
> \|https://github.com/9uapaw] Thoughts?|
> |[~bteke] [https://github.com/apache/hadoop/pull/3660#discussion_r765110750]
> +1, even the QueuePath object could have some kind of support for this.|
> |[~gandras] [https://github.com/apache/hadoop/pull/3660#discussion_r765131244]
> Agreed, let's handle it in a followup!|
>  
> ----
>  
> [...he/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java|https://github.com/apache/hadoop/pull/3660/files/f956918bc154d0e35fce07c5dd8be804eb007acc#diff-c4b0c5e70208f1e3cfbd5a86ffa2393e5c996cc8b45605d9d41abcb7e0bd382a]
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765023717]
> There are many string operations in this class:
> E.g. * getQueuePrefix that works with the full queue path
>  * getNodeLabelPrefix that also works with the full queue path|
> I suggest to create a static class, called "QueuePrefixes" or something like 
> that and add some static methods there to convert the QueuePath object to 
> those various queue prefix strings that are ultimately keys in the 
> Configuration object.
>  
> ----
>  
> [...he/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java|https://github.com/apache/hadoop/pull/3660/files/f956918bc154d0e35fce07c5dd8be804eb007acc#diff-c4b0c5e70208f1e3cfbd5a86ffa2393e5c996cc8b45605d9d41abcb7e0bd382a]
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765026119]
> This seems hacky, just based on the constructor parameter names of QueuePath: 
> parent, leaf.
> The AQC Template prefix is not the leaf, obviously.
> Could we somehow circumvent this?|
> |[~bteke] [https://github.com/apache/hadoop/pull/3660#discussion_r765126207]
> Maybe a factory method could be created, which returns a new QueuePath with 
> the parent set as the original queuePath. I.e 
> rootQueuePath.createChild(String childName) -> this could return a new 
> QueuePath object with root.childName path, and rootQueuePath as parent.|
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765039033]
> Looking at this getQueues method, I realized almost all the callers are using 
> some kind of string magic that should be addressed with this patch.
> For example, take a look at: 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.MutableCSConfigurationProvider#addQueue
> I think getQueues should also receive the QueuePath object instead of 
> Strings.|
>  
> ----
>  
> [.../src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueue.java|https://github.com/apache/hadoop/pull/3660/files/0c3dd17c936260fc9c386dcabc6368b54b27aa82..39f4ec203377244f840e4593aa02386ff51cc3c4#diff-0adf8192c51cbe4671324f06f7f8cbd48898df0376bbcc516451a3bdb2b48d3b]
> |[~bteke] [https://github.com/apache/hadoop/pull/3660#discussion_r765912967]
> Nit: Gets the queue path object.
> The object of the queue suggests a CSQueue object.|
> |[~snemeth] [https://github.com/apache/hadoop/pull/3660#discussion_r765922133]
> Will fix the nit upon commit if I'm fine with the whole patch. Thanks for 
> noticing.|
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to