You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sh...@apache.org on 2009/12/10 01:39:19 UTC
svn commit: r889035 - in /hadoop/hdfs/trunk: CHANGES.txt
src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml
Author: shv
Date: Thu Dec 10 00:39:18 2009
New Revision: 889035
URL: http://svn.apache.org/viewvc?rev=889035&view=rev
Log:
HDFS-185. Disallow chown, chgrp, chmod, setQuota, and setSpaceQuota when name-node is in safemode. Contributed by Ravi Phulari.
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=889035&r1=889034&r2=889035&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Thu Dec 10 00:39:18 2009
@@ -591,6 +591,9 @@
HDFS-793. Data node should receive the whole packet ack message before it
constructs and sends its own ack message for the packet. (hairong)
+ HDFS-185. Disallow chown, chgrp, chmod, setQuota, and setSpaceQuota when
+ name-node is in safemode. (Ravi Phulari via shv)
+
Release 0.20.1 - 2009-09-01
IMPROVEMENTS
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=889035&r1=889034&r2=889035&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Thu Dec 10 00:39:18 2009
@@ -645,6 +645,8 @@
*/
public synchronized void setPermission(String src, FsPermission permission
) throws IOException {
+ if (isInSafeMode())
+ throw new SafeModeException("Cannot set permission for " + src, safeMode);
checkOwner(src);
dir.setPermission(src, permission);
getEditLog().logSync();
@@ -662,6 +664,8 @@
*/
public synchronized void setOwner(String src, String username, String group
) throws IOException {
+ if (isInSafeMode())
+ throw new SafeModeException("Cannot set owner for " + src, safeMode);
FSPermissionChecker pc = checkOwner(src);
if (!pc.isSuper) {
if (username != null && !pc.user.equals(username)) {
@@ -1863,10 +1867,11 @@
* contract.
*/
void setQuota(String path, long nsQuota, long dsQuota) throws IOException {
+ if (isInSafeMode())
+ throw new SafeModeException("Cannot set quota on " + path, safeMode);
if (isPermissionEnabled) {
checkSuperuserPrivilege();
}
-
dir.setQuota(path, nsQuota, dsQuota);
getEditLog().logSync();
}
Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml?rev=889035&r1=889034&r2=889035&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml Thu Dec 10 00:39:18 2009
@@ -16876,5 +16876,144 @@
</comparators>
</test>
+
+ <test> <!--Tested -->
+ <description>Verifying chmod operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <command>-fs NAMENODE -touchz /test/file1 </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <command>-fs NAMENODE -chmod 777 /test/file1 </command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>Cannot set permission for /test/file1. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+ <test> <!--Tested -->
+ <description>Verifying chown operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <command>-fs NAMENODE -touchz /test/file1 </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <command>-fs NAMENODE -chown root /test/file1 </command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>Cannot set owner for /test/file1. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+ <test> <!--Tested -->
+ <description>Verifying chgrp operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <command>-fs NAMENODE -touchz /test/file1 </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <command>-fs NAMENODE -chgrp newgroup /test/file1 </command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>Cannot set owner for /test/file1. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+
+ <test> <!--Tested -->
+ <description>Verifying setQuota operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -setQuota 100 /test </dfs-admin-command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>setQuota: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot set quota on /test. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+ <test> <!--Tested -->
+ <description>Verifying clrQuota operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -clrQuota /test </dfs-admin-command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>clrQuota: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot set quota on /test. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+
+ <test> <!--Tested -->
+ <description>Verifying setSpaceQuota operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -setSpaceQuota 100 /test </dfs-admin-command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>setSpaceQuota: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot set quota on /test. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+ <test> <!--Tested -->
+ <description>Verifying clrSpaceQuota operation is not permitted in safemode</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /test </command>
+ <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -clrSpaceQuota /test </dfs-admin-command>
+ </test-commands>
+ <cleanup-commands>
+ <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
+ <dfs-admin-command>-fs NAMENODE -rmr /test </dfs-admin-command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>SubstringComparator</type>
+ <expected-output>clrSpaceQuota: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot set quota on /test. Name node is in safe mode.</expected-output>
+ </comparator>
+ </comparators>
+ </test>
+
+
</tests>
</configuration>