Configuration conf = new Configuration();
fc1 = FileContext.getFileContext(uri1, conf);
fc2 = FileContext.getFileContext(uri2, conf);
fc.setUMask(umask_for_fc1); // Screws up umask for fc2 also!
This was not the case before
When trying to localize a HDFS directory (hdfs:///my/dir/1.txt), NodeManager tries to replicate the directory structure on the local file-system ($yarn-local-dirs/filecache/my/dir/1.txt).
Now depending on whether NM has ever done a log-aggregation (completely unrelated code that sets umask to be 137 for its own files on HDFS), the directories /my and /my/dir on local-fs may have different permissions. In the specific case where NM did log-aggregation, /my/dir was created with 137 umask and so localization of 1.txt completely failed due to absent directory executable permissions!