[ https://issues.apache.org/jira/browse/HDFS-2360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Harsh J resolved HDFS-2360. --------------------------- Resolution: Not a Problem The last line of the command (excluding the log and its stack trace via the WARN) does today print the base message reason that should catch the eye clearly: {code} put: The DiskSpace quota of /testDir is exceeded: quota = 1024 B = 1 KB but diskspace consumed = 402653184 B = 384 MB {code} Resolving this as it should be clear enough. To get rid of the WARN, the client logger can be nullified, but the catch layer is rather generic today to specifically turn it off without causing other impact (for other use-cases and troubles) I think. As always though, feel free to reopen with any counter-point. > Ugly stacktrace when quota exceeds > ---------------------------------- > > Key: HDFS-2360 > URL: https://issues.apache.org/jira/browse/HDFS-2360 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs-client > Affects Versions: 0.23.0 > Reporter: Rajit Saha > Priority: Minor > > Will it be better to catch the exception and throw a small reasonable messege > to user when they exceed quota? > $hdfs dfs -mkdir testDir > $hdfs dfsadmin -setSpaceQuota 191M testDir > $hdfs dfs -count -q testDir > none inf 200278016 200278016 1 > 0 0 > hdfs://<NN hostname>:<port>/user/hdfsqa/testDir > $hdfs dfs -put /etc/passwd /user/hadoopqa/testDir > 11/09/19 08:08:15 WARN hdfs.DFSClient: DataStreamer Exception > org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The DiskSpace quota > of /user/hdfsqa/testDir is exceeded: > quota=191.0m diskspace consumed=768.0m > at > org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota.verifyQuota(INodeDirectoryWithQuota.java:159) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyQuota(FSDirectory.java:1609) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:1383) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.addBlock(FSDirectory.java:370) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.allocateBlock(FSNamesystem.java:1681) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1476) > at > org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:389) > at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:365) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1496) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1492) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1135) > at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1490) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at > org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:90) > at > org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1100) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:972) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:454) > Caused by: org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The > DiskSpace quota of /user/hdfsqa/testDir is > exceeded: quota=191.0m diskspace consumed=768.0m > at > org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota.verifyQuota(INodeDirectoryWithQuota.java:159) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyQuota(FSDirectory.java:1609) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:1383) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.addBlock(FSDirectory.java:370) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.allocateBlock(FSNamesystem.java:1681) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1476) > at > org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:389) > at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:365) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1496) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1492) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1135) > at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1490) > at org.apache.hadoop.ipc.Client.call(Client.java:1084) > at > org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:193) > at $Proxy6.addBlock(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:100) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:65) > at $Proxy6.addBlock(Unknown Source) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1098) > ... 2 more > put: The DiskSpace quota of /user/hdfsqa/testDir is exceeded: quota=191.0m > diskspace consumed=768.0m > 11/09/19 08:08:15 ERROR hdfs.DFSClient: Failed to close file > /user/hdfsqa/testDir/passwd > org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The DiskSpace quota > of /user/hdfsqa/testDir is exceeded: > quota=191.0m diskspace consumed=768.0m > at > org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota.verifyQuota(INodeDirectoryWithQuota.java:159) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyQuota(FSDirectory.java:1609) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:1383) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.addBlock(FSDirectory.java:370) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.allocateBlock(FSNamesystem.java:1681) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1476) > at > org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:389) > at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:365) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1496) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1492) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1135) > at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1490) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at > org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:90) > at > org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1100) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:972) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:454) > Caused by: org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The > DiskSpace quota of /user/hdfsqa/testDir is > exceeded: quota=191.0m diskspace consumed=768.0m > at > org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota.verifyQuota(INodeDirectoryWithQuota.java:159) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyQuota(FSDirectory.java:1609) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:1383) > at > org.apache.hadoop.hdfs.server.namenode.FSDirectory.addBlock(FSDirectory.java:370) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.allocateBlock(FSNamesystem.java:1681) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1476) > at > org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:389) > at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:365) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1496) > at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1492) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1135) > at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1490) > at org.apache.hadoop.ipc.Client.call(Client.java:1084) > at > org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:193) > at $Proxy6.addBlock(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:100) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:65) > at $Proxy6.addBlock(Unknown Source) > at > org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1098) > ... 2 more -- This message was sent by Atlassian JIRA (v6.3.4#6332)