[ 
https://issues.apache.org/jira/browse/MAPREDUCE-7443?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ConfX updated MAPREDUCE-7443:
-----------------------------
    Summary:  State polluter for system file permissions  (was:  state polluter 
for system file permissions)

>  State polluter for system file permissions
> -------------------------------------------
>
>                 Key: MAPREDUCE-7443
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-7443
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>            Reporter: ConfX
>            Priority: Critical
>         Attachments: reproduce.sh
>
>
> h2. What happened:
> After setting {{fs.permissions.umask-mode}} to disable write permission of a 
> file, the file's write permission is also disabled in host permission.
> h2. Buggy code:
> When creating {{target/test-dir/output}} the RawLocalFileSystem directly 
> manipulate the system permission (line 978 of 
> {{{}RawLocalFileSystem.java{}}}):
> {noformat}
>       String perm = String.format("%04o", permission.toShort());
>       Shell.execCommand(Shell.getSetPermissionCommand(perm, false,
>         FileUtil.makeShellPath(pathToFile(p), true)));{noformat}
> If the permission turns off the write permission to the folder, the test 
> would fail due to permission denied. However, the test does not clean the 
> folder properly (by chmod and clean in an [@after|https://github.com/after] 
> method), causing all the subsequent runs to be polluted.
> h2. StackTrace:
> {noformat}
> java.io.IOException: Mkdirs failed to create 
> file:/home/ctestfuzz/fuzz-hadoop/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/target/test-dir/output/_temporary/1/_temporary/attempt_200707121733_0001_m_000000_0
>  (exists=false, 
> cwd=file:/home/ctestfuzz/fuzz-hadoop/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core),
> at 
> org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:515),
> at 
> org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:500),
> at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:1195),
> at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:1081),
> at 
> org.apache.hadoop.mapred.TextOutputFormat.getRecordWriter(TextOutputFormat.java:125),
> at 
> org.apache.hadoop.mapred.TestFileOutputCommitter.testRecoveryInternal(TestFileOutputCommitter.java:109),
> at 
> org.apache.hadoop.mapred.TestFileOutputCommitter.testRecoveryUpgradeV1V2(TestFileOutputCommitter.java:171){noformat}
> h2. How to reproduce:
> There are two ways to reproduce:
>  # (1) Set {{fs.permissions.umask-mode}} to {{243}}
> (2) Run test: 
> {{org.apache.hadoop.mapred.TestFileOutputCommitter#testRecoveryUpgradeV1V2}} 
> and observe an IOException
> (3) Check to see that current user has lost writing access to 
> {{target/test-dir/output}}
>  # (1) Add an {{assertTrue(False);}} to line 112 of 
> {{TestFileOutputCommitter.java}} to simulate the test failing in the middle
> (2) Run test: 
> {{org.apache.hadoop.mapred.TestFileOutputCommitter#testRecoveryUpgradeV1V2}} 
> and observe an AssertionError
> (3) Set {{fs.permissions.umask-mode}} to {{243}}
> (4) Run test: 
> {{org.apache.hadoop.mapred.TestFileOutputCommitter#testRecoveryUpgradeV1V2}} 
> and observe an IOException.
> (5) Check to see that the current user has lost writing access to 
> {{test-dir/output/_temporary/1/_temporary/attempt_200707121733_0001_m_000000_0}}
>  
> For an easy reproduction, run the reproduce.sh in the attachment.
> We are happy to provide a patch if this issue is confirmed.



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

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

Reply via email to