TEZ-4057: Fix Unsorted broadcast shuffle umasks (Eric Wohlstadter, reviewed by Gopal V)

Signed-off-by: Gopal V <gopalv@apache.org>
diff --git a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/writers/UnorderedPartitionedKVWriter.java b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/writers/UnorderedPartitionedKVWriter.java
index 0486ddc..29478dc 100644
--- a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/writers/UnorderedPartitionedKVWriter.java
+++ b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/writers/UnorderedPartitionedKVWriter.java
@@ -281,6 +281,9 @@
       skipBuffers = true;
       writer = new IFile.Writer(conf, rfs, finalOutPath, keyClass, valClass,
           codec, outputRecordsCounter, outputRecordBytesCounter);
+      if (!SPILL_FILE_PERMS.equals(SPILL_FILE_PERMS.applyUMask(FsPermission.getUMask(conf)))) {
+        rfs.setPermission(finalOutPath, SPILL_FILE_PERMS);
+      }
     } else {
       skipBuffers = false;
       writer = null;
diff --git a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/common/writers/TestUnorderedPartitionedKVWriter.java b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/common/writers/TestUnorderedPartitionedKVWriter.java
index dfd807b..83bde7b 100644
--- a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/common/writers/TestUnorderedPartitionedKVWriter.java
+++ b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/common/writers/TestUnorderedPartitionedKVWriter.java
@@ -1264,6 +1264,10 @@
 
     assertTrue(localFs.exists(outputFilePath));
     assertTrue(localFs.exists(spillFilePath));
+    assertEquals("Incorrect output permissions", (short)0640,
+        localFs.getFileStatus(outputFilePath).getPermission().toShort());
+    assertEquals("Incorrect index permissions", (short)0640,
+        localFs.getFileStatus(spillFilePath).getPermission().toShort());
 
     // verify no intermediate spill files have been left around
     synchronized (kvWriter.spillInfoList) {