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

maobaolong edited comment on HDFS-9038 at 5/4/17 8:29 AM:
----------------------------------------------------------

{code}
public long getNonDfsUsed() throws IOException {
    long actualNonDfsUsed = getActualNonDfsUsed();
    if (actualNonDfsUsed < reserved) {
      return 0L;
    }
    return actualNonDfsUsed - reserved;
  }
{code}

The code block above is the function to caculate nonDfsUsed, but in fact it 
will let the result to be 0L out of expect. Such as this following situation:

du.reserved  = 50G
Disk Capacity = 2048G
Disk Available = 2000G
Dfs used = 30G

usage.getUsed() = dirFile.getTotalSpace() - dirFile.getFreeSpace()
                            = 2048G - 2000G
                            = 48G
getActualNonDfsUsed  =  usage.getUsed() - getDfsUsed()
                                      =  48G - 30G
                                      = 18G
18G < 50G, so the function `getNonDfsUsed` actualNonDfsUsed < reserved, and the 
NonDfsUsed will return 0, is that logic make sense?


was (Author: maobaolong):
```java
public long getNonDfsUsed() throws IOException {
    long actualNonDfsUsed = getActualNonDfsUsed();
    if (actualNonDfsUsed < reserved) {
      return 0L;
    }
    return actualNonDfsUsed - reserved;
  }
```

The code block above is the function to caculate nonDfsUsed, but in fact it 
will let the result to be 0L out of expect. Such as this following situation:

du.reserved  = 50G
Disk Capacity = 2048G
Disk Available = 2000G
Dfs used = 30G

usage.getUsed() = dirFile.getTotalSpace() - dirFile.getFreeSpace()
                            = 2048G - 2000G
                            = 48G
getActualNonDfsUsed  =  usage.getUsed() - getDfsUsed()
                                      =  48G - 30G
                                      = 18G
18G < 50G, so the function `getNonDfsUsed` actualNonDfsUsed < reserved, and the 
NonDfsUsed will return 0, is that logic make sense?

> DFS reserved space is erroneously counted towards non-DFS used.
> ---------------------------------------------------------------
>
>                 Key: HDFS-9038
>                 URL: https://issues.apache.org/jira/browse/HDFS-9038
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: datanode
>    Affects Versions: 2.7.1
>            Reporter: Chris Nauroth
>            Assignee: Brahma Reddy Battula
>             Fix For: 2.8.0, 2.7.4, 3.0.0-alpha2
>
>         Attachments: GetFree.java, HDFS-9038-002.patch, HDFS-9038-003.patch, 
> HDFS-9038-004.patch, HDFS-9038-005.patch, HDFS-9038-006.patch, 
> HDFS-9038-007.patch, HDFS-9038-008.patch, HDFS-9038-009.patch, 
> HDFS-9038-010.patch, HDFS-9038-011.patch, HDFS-9038-branch-2.7.patch, 
> HDFS-9038.patch
>
>
> HDFS-5215 changed the DataNode volume available space calculation to consider 
> the reserved space held by the {{dfs.datanode.du.reserved}} configuration 
> property.  As a side effect, reserved space is now counted towards non-DFS 
> used.  I don't believe it was intentional to change the definition of non-DFS 
> used.  This issue proposes restoring the prior behavior: do not count 
> reserved space towards non-DFS used.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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

Reply via email to