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

Wei-Chiu Chuang commented on HDFS-10826:
----------------------------------------

Hello [~tasanuma0829] thanks for your contribution and [~ajisakaa] and 
[~jingzhao] for the review. I am late to review this patch but if you don't 
mind there are a little minor improvement that can be made:

in TestFsck
{code}
// make an unrecoverable ec file with corrupted blocks
              for(int i = 0; i < 4; i++) {
{code}
* Instead of hardcode "4", it would be more meaningful to use parityBlocks+1 I 
assume?

{code}
              // Read the file to trigger reportBadBlocks
              try {
                IOUtils.copyBytes(fs.open(file), new 
IOUtils.NullOutputStream(), conf,
                    true);
              } catch (IOException ie) {
                // Ignore exception
              }
{code}
* Would it be possible to verify the exception thrown is expected when // Read 
the file to trigger reportBadBlocks?

{code}
if (fs != null) {
                try {
                  fs.close();
                } catch (Exception e) {
                }
              }
              if (cluster != null) {
                cluster.shutdown();
              }
{code}
You should just let the exception be thrown instead of catch and ignore it.

A better improvement could use @Before @After annotation to initialize/close 
cluster and fs object. Then you do not even need to try...catch.

{code:title=waitForUnrecoverableBlockGroup()}
catch (Exception e) {
                  FSImage.LOG.error("Exception caught", e);
                  Assert.fail("Caught unexpected exception.");
                }
{code}
I wonder if there is a more appropriate log object than FSImage.



> The result of fsck should be CRITICAL when there are unrecoverable ec block 
> groups.
> -----------------------------------------------------------------------------------
>
>                 Key: HDFS-10826
>                 URL: https://issues.apache.org/jira/browse/HDFS-10826
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: erasure-coding
>            Reporter: Takanobu Asanuma
>            Assignee: Takanobu Asanuma
>         Attachments: HDFS-10826.2.patch, HDFS-10826.3.patch, 
> HDFS-10826.4.patch, HDFS-10826.WIP.1.patch
>
>
> For RS-6-3, when there is one ec block group and
> 1) 0~3 out of 9 internal blocks are missing, the result of fsck is HEALTY.
> 2) 4~8 out of 9 internal blocks are missing, the result of fsck is HEALTY.
> {noformat}
> Erasure Coded Block Groups:
>  Total size:    536870912 B
>  Total files:   1
>  Total block groups (validated):        1 (avg. block group size 536870912 B)
>   ********************************
>   UNRECOVERABLE BLOCK GROUPS:   1 (100.0 %)
>   ********************************
>  Minimally erasure-coded block groups:  0 (0.0 %)
>  Over-erasure-coded block groups:       0 (0.0 %)
>  Under-erasure-coded block groups:      1 (100.0 %)
>  Unsatisfactory placement block groups: 0 (0.0 %)
>  Default ecPolicy:              RS-DEFAULT-6-3-64k
>  Average block group size:      5.0
>  Missing block groups:          0
>  Corrupt block groups:          0
>  Missing internal blocks:       4 (44.444443 %)
> FSCK ended at Wed Aug 31 13:42:05 JST 2016 in 4 milliseconds
> The filesystem under path '/' is HEALTHY
> {noformat}
> 3) 9 out of 9 internal blocks are missing, the result of fsck is CRITICAL. 
> (Because it is regarded as a missing block group.)
> In case 2), the result should be CRITICAL since the ec block group is 
> unrecoverable.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
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