Jinglun created HDFS-14562:
------------------------------

             Summary: The behaviour of getContentSummaryInt() in 
getQuotaUsage() should be configurable.
                 Key: HDFS-14562
                 URL: https://issues.apache.org/jira/browse/HDFS-14562
             Project: Hadoop HDFS
          Issue Type: Improvement
    Affects Versions: 3.1.0
            Reporter: Jinglun


Our XiaoMi HDFS is considering upgrading from 2.6 to 3.1. There is a ploblem 
about the getQuotaUsage rpc. In FSDirStatAndListingOp.getQuotaUsage(), if there 
isn't any quota on the dir, it will automatically count the dir to get the info 
of usage. But count on big dirs are quit dangerous, it can slow the NameNode 
and even cause a failover. We've encountered the case that 10 concurrent count 
rpcs on big dir causes the NameNode failover.
In our cluster we always need to check whether the dir has got quota or not, 
and the automatically count will make things dangerous. Making the behavior 
configurable seems a good idea. Administrator can decide to fall back to count 
or fill the consume with -1 when there is no quota on the dir.
When I try to make it configurable, I find another problem. When we convert 
QuotaUsageProto and QuotaUsage in PBHelperClient.class, there are checks for 
qu.hasTypeQuotaInfos() and qu.isTypeQuotaSet() || qu.isTypeConsumedAvailable(). 
Supposing we want to return a QuotaUsage with \{fileAndDirectoryCount=-1, 
spaceConsumed=-1, typeConsumed={-1,-1,-1,-1,-1}} from Namenode to Client, 
because of the check, the value got by Client will be 
\{fileAndDirectoryCount=-1, spaceConsumed=-1, typeConsumed={0,0,0,0,0}}. It's 
inconsistent and I can't see any good reason that spaceConsumed could return -1 
while typeConsumed must be 0. In fact we don't need the checks, checking all 
the assignment statement then we'll find that QuotaUsage.typeConsumed and 
typeQuota will never be null. And it's not right for the Convert layer to 
tamper the returned value. Since -1 represents undefined in quota and usage, we 
should remove the check and let Namenode returns -1.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to