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

Wellington Chevreuil commented on HDFS-12618:
---------------------------------------------

I was going to add some tests to TestFsck, but for some reason when running the 
tests on trunk (without my changes), am getting below errors for some already 
existing tests:

{noformat}
Running org.apache.hadoop.hdfs.server.namenode.TestFsck
Tests run: 32, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 136.329 sec 
<<< FAILURE! - in org.apache.hadoop.hdfs.server.namenode.TestFsck
testFsckCorruptECFile(org.apache.hadoop.hdfs.server.namenode.TestFsck)  Time 
elapsed: 3.022 sec  <<< ERROR!
java.lang.IllegalStateException: failed to create a child event loop
        at sun.nio.ch.KQueueArrayWrapper.init(Native Method)
        at sun.nio.ch.KQueueArrayWrapper.<init>(KQueueArrayWrapper.java:98)
        at sun.nio.ch.KQueueSelectorImpl.<init>(KQueueSelectorImpl.java:88)
        at 
sun.nio.ch.KQueueSelectorProvider.openSelector(KQueueSelectorProvider.java:42)
        at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:174)
        at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:150)
        at 
io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:103)
        at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:64)
        at 
io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:50)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:70)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:65)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:56)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:48)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:40)
        at 
org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:132)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:954)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1402)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:497)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2778)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2681)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes(MiniDFSCluster.java:1635)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:882)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:494)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:453)
        at 
org.apache.hadoop.hdfs.server.namenode.TestFsck.testFsckCorruptECFile(TestFsck.java:2304)

testBlockIdCKDecommission(org.apache.hadoop.hdfs.server.namenode.TestFsck)  
Time elapsed: 2.702 sec  <<< ERROR!
java.lang.IllegalStateException: failed to create a child event loop
        at sun.nio.ch.IOUtil.makePipe(Native Method)
        at sun.nio.ch.KQueueSelectorImpl.<init>(KQueueSelectorImpl.java:84)
        at 
sun.nio.ch.KQueueSelectorProvider.openSelector(KQueueSelectorProvider.java:42)
        at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:174)
        at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:150)
        at 
io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:103)
        at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:64)
        at 
io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:50)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:70)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:65)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:56)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:48)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:40)
        at 
org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:132)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:954)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1402)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:497)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2778)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2681)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes(MiniDFSCluster.java:1635)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:882)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:494)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:453)
        at 
org.apache.hadoop.hdfs.server.namenode.TestFsck.testBlockIdCKDecommission(TestFsck.java:1504)

testFsckOpenECFiles(org.apache.hadoop.hdfs.server.namenode.TestFsck)  Time 
elapsed: 0.428 sec  <<< ERROR!
org.apache.hadoop.util.DiskChecker$DiskErrorException: Too many failed volumes 
- current valid volumes: 0, volumes configured: 2, volumes failed: 2, volume 
failures tolerated: 0
        at 
org.apache.hadoop.hdfs.server.datanode.checker.StorageLocationChecker.check(StorageLocationChecker.java:220)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2771)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2681)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes(MiniDFSCluster.java:1635)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:882)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:494)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:453)
        at 
org.apache.hadoop.hdfs.server.namenode.TestFsck.testFsckOpenECFiles(TestFsck.java:689)

testBlockIdCK(org.apache.hadoop.hdfs.server.namenode.TestFsck)  Time elapsed: 
2.376 sec  <<< ERROR!
java.lang.IllegalStateException: failed to create a child event loop
        at sun.nio.ch.KQueueArrayWrapper.init(Native Method)
        at sun.nio.ch.KQueueArrayWrapper.<init>(KQueueArrayWrapper.java:98)
        at sun.nio.ch.KQueueSelectorImpl.<init>(KQueueSelectorImpl.java:88)
        at 
sun.nio.ch.KQueueSelectorProvider.openSelector(KQueueSelectorProvider.java:42)
        at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:174)
        at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:150)
        at 
io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:103)
        at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:64)
        at 
io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:50)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:70)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:65)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:56)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:48)
        at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:40)
        at 
org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:132)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:954)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1402)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:497)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2778)
        at 
org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2681)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes(MiniDFSCluster.java:1635)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:882)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:494)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:453)
        at 
org.apache.hadoop.hdfs.server.namenode.TestFsck.testBlockIdCK(TestFsck.java:1449)


Results :

Tests in error: 
  TestFsck.testFsckCorruptECFile:2304 » IllegalState failed to create a child 
ev...
  TestFsck.testBlockIdCKDecommission:1504 » IllegalState failed to create a 
chil...
  TestFsck.testFsckOpenECFiles:689 » DiskError Too many failed volumes - 
current...
  TestFsck.testBlockIdCK:1449 » IllegalState failed to create a child event loop
{noformat}

Is this something environmental? 

> fsck -includeSnapshots reports wrong amount of total blocks
> -----------------------------------------------------------
>
>                 Key: HDFS-12618
>                 URL: https://issues.apache.org/jira/browse/HDFS-12618
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: tools
>    Affects Versions: 3.0.0-alpha3
>            Reporter: Wellington Chevreuil
>            Assignee: Wellington Chevreuil
>            Priority: Minor
>         Attachments: HDFS-121618.initial
>
>
> When snapshot is enabled, if a file is deleted but is contained by a 
> snapshot, *fsck* will not reported blocks for such file, showing different 
> number of *total blocks* than what is exposed in the Web UI. 
> This should be fine, as *fsck* provides *-includeSnapshots* option. The 
> problem is that *-includeSnapshots* option causes *fsck* to count blocks for 
> every occurrence of a file on snapshots, which is wrong because these blocks 
> should be counted only once (for instance, if a 100MB file is present on 3 
> snapshots, it would still map to one block only in hdfs). This causes fsck to 
> report much more blocks than what actually exist in hdfs and is reported in 
> the Web UI.
> Here's an example:
> 1) HDFS has two files of 2 blocks each:
> {noformat}
> $ hdfs dfs -ls -R /
> drwxr-xr-x   - root supergroup          0 2017-10-07 21:21 /snap-test
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:16 /snap-test/file1
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:17 /snap-test/file2
> drwxr-xr-x   - root supergroup          0 2017-05-13 13:03 /test
> {noformat} 
> 2) There are two snapshots, with the two files present on each of the 
> snapshots:
> {noformat}
> $ hdfs dfs -ls -R /snap-test/.snapshot
> drwxr-xr-x   - root supergroup          0 2017-10-07 21:21 
> /snap-test/.snapshot/snap1
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:16 
> /snap-test/.snapshot/snap1/file1
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:17 
> /snap-test/.snapshot/snap1/file2
> drwxr-xr-x   - root supergroup          0 2017-10-07 21:21 
> /snap-test/.snapshot/snap2
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:16 
> /snap-test/.snapshot/snap2/file1
> -rw-r--r--   1 root supergroup  209715200 2017-10-07 20:17 
> /snap-test/.snapshot/snap2/file2
> {noformat}
> 3) *fsck -includeSnapshots* reports 12 blocks in total (4 blocks for the 
> normal file path, plus 4 blocks for each snapshot path):
> {noformat}
> $ hdfs fsck / -includeSnapshots
> FSCK started by root (auth:SIMPLE) from /127.0.0.1 for path / at Mon Oct 09 
> 15:15:36 BST 2017
> Status: HEALTHY
>  Number of data-nodes:        1
>  Number of racks:             1
>  Total dirs:                  6
>  Total symlinks:              0
> Replicated Blocks:
>  Total size:  1258291200 B
>  Total files: 6
>  Total blocks (validated):    12 (avg. block size 104857600 B)
>  Minimally replicated blocks: 12 (100.0 %)
>  Over-replicated blocks:      0 (0.0 %)
>  Under-replicated blocks:     0 (0.0 %)
>  Mis-replicated blocks:               0 (0.0 %)
>  Default replication factor:  1
>  Average block replication:   1.0
>  Missing blocks:              0
>  Corrupt blocks:              0
>  Missing replicas:            0 (0.0 %)
> {noformat}
> 4) Web UI shows the correct number (4 blocks only):
> {noformat}
> Security is off.
> Safemode is off.
> 5 files and directories, 4 blocks = 9 total filesystem object(s).
> {noformat}
> I would like to work on this solution, will propose an initial solution 
> shortly.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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