[ 
https://issues.apache.org/jira/browse/HDFS-1026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13055293#comment-13055293
 ] 

Eli Collins commented on HDFS-1026:
-----------------------------------

Yes, add a comment in FSDirectory#addBlock and in the code that generates a 
quota violation exception LOG.warn that the quota check failed because the 
quota is smaller than block size * # replicas.

> Quota checks fail for small files and quotas
> --------------------------------------------
>
>                 Key: HDFS-1026
>                 URL: https://issues.apache.org/jira/browse/HDFS-1026
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: documentation, name-node
>    Affects Versions: 0.20.1, 0.20.2, 0.20.3, 0.21.0, 0.22.0
>            Reporter: Eli Collins
>            Priority: Blocker
>
> If a directory has a quota less than blockSize * numReplicas then you can't 
> add a file to it, even if the file size is less than the quota. This is 
> because FSDirectory#addBlock updates the count assuming at least one block is 
> written in full. We don't know how much of the block will be written when 
> addBlock is called and supporting such small quotas is not important so 
> perhaps we should document this and log an error message instead of making 
> small (blockSize * numReplicas) quotas work.
> {code}
> // check quota limits and updated space consumed
> updateCount(inodes, inodes.length-1, 0, 
> fileINode.getPreferredBlockSize()*fileINode.getReplication(), true);
> {code}
> You can reproduce with the following commands:
> {code}
> $ dd if=/dev/zero of=temp bs=1000 count=64
> $ hadoop fs -mkdir /user/eli/dir
> $ hdfs dfsadmin -setSpaceQuota 191M /user/eli/dir
> $ hadoop fs -put temp /user/eli/dir  # Causes DSQuotaExceededException
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to