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

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

slfan1989 commented on code in PR #6120:
URL: https://github.com/apache/hadoop/pull/6120#discussion_r1341880623


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/filecontroller/LogAggregationFileController.java:
##########
@@ -429,26 +460,34 @@ public void verifyAndCreateRemoteLogDir() {
             + remoteRootLogDir + "]", e);
       }
     } else {
-      //Check if FS has capability to set/modify permissions
-      Path permissionCheckFile = new Path(qualified, 
String.format("%s.permission_check",
-          RandomStringUtils.randomAlphanumeric(8)));
+      final FsLogPathKey key = new FsLogPathKey(remoteFS.getClass(), 
qualified);
+      FileSystem finalRemoteFS = remoteFS;
+      fsSupportsChmod = FS_CHMOD_CACHE.computeIfAbsent(key,
+          k -> checkFsSupportsChmod(finalRemoteFS, remoteRootLogDir, 
qualified));
+    }
+  }
+
+  private boolean checkFsSupportsChmod(FileSystem remoteFS, Path logDir, Path 
qualified) {
+    //Check if FS has capability to set/modify permissions
+    Path permissionCheckFile = new Path(qualified, 
String.format("%s.permission_check",
+        RandomStringUtils.randomAlphanumeric(8)));
+    try {
+      remoteFS.createNewFile(permissionCheckFile);
+      remoteFS.setPermission(permissionCheckFile, new 
FsPermission(TLDIR_PERMISSIONS));
+      return true;
+    } catch (UnsupportedOperationException use) {
+      LOG.info("Unable to set permissions for configured filesystem since"
+          + " it does not support this {}", remoteFS.getScheme());
+    } catch (IOException e) {
+      LOG.warn("Failed to check if FileSystem supports permissions on "

Review Comment:
   In the log we should use {}.





> Fix performance issue of permission check in verifyAndCreateRemoteLogDir
> ------------------------------------------------------------------------
>
>                 Key: YARN-11578
>                 URL: https://issues.apache.org/jira/browse/YARN-11578
>             Project: Hadoop YARN
>          Issue Type: Bug
>            Reporter: Tamas Domok
>            Assignee: Tamas Domok
>            Priority: Major
>              Labels: pull-request-available
>
> YARN-10901 introduced a check to avoid a warn message in NN logs in certain 
> situations (when /tmp/logs is not owned by the yarn user), but it adds 3 
> NameNode calls (create, setpermission, delete) during log aggregation 
> collection, for *every* NM. Meaning, when a YARN job completes, at the YARN 
> log aggregation phase this check is done for every job, from every 
> NodeManager.
> In 30 minutes 4.2 % of all the NameNode calls were due to this in a cluster. 
> "write" calls need a Namesystem writeLock as well, so the impact is bigger.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to