You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Arpit Agarwal (JIRA)" <ji...@apache.org> on 2017/03/12 00:27:04 UTC
[jira] [Comment Edited] (HDFS-11511) Support Timeout when checking
single disk
[ https://issues.apache.org/jira/browse/HDFS-11511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15906369#comment-15906369 ]
Arpit Agarwal edited comment on HDFS-11511 at 3/12/17 12:26 AM:
----------------------------------------------------------------
Comments on the unit tests:
# Can you please add timeouts on TestDatasetVolumeCheckerTimeout? You can either add {{@timeout}} annotations on each test method or add a rule at the class level. e.g.
{code}
@Rule
public final Timeout testTimeout = new Timeout(300_000);
{code}
# Instead of calling {{Thread.sleep(DISK_CHECK_TIME)}}, the check callback of the slow volume can wait on a mutex. testDiskCheckTimeout should unblock the waiting thread by signalling the mutex before exiting.
# Looks like TestDatasetVolumeCheckerTimeout#IGNORED_CONTEXT can be removed.
# Nitpick: need space after {{//}} at {//Assert}}. Also at {{//Delay}} and {{//Wait}}.
Two tests failed for me:
{code}
testDiskCheckTimeout(org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout) Time elapsed: 0.474 sec <<< FAILURE!
java.lang.AssertionError:
Expected: is <1L>
but: was <0L>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
at org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout.testDiskCheckTimeout(TestDatasetVolumeCheckerTimeout.java:121)
testTimeoutExceptionIsThrown(org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout) Time elapsed: 0.04 sec <<< FAILURE!
java.lang.AssertionError:
Expected: is <1>
but: was <0>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
at org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout.testTimeoutExceptionIsThrown(TestDatasetVolumeCheckerTimeout.java:162)
{code}
The test coverage looks good. One suggestion - we can move the new unit tests to a TestThrottledAsyncCheckerWithTimeout class, and retain one unit test in TestDatasetVolumeCheckerTimeout to verify that the DFS_DATANODE_DISK_CHECK_TIMEOUT_KEY setting is respected.
was (Author: arpitagarwal):
Comments on the unit tests:
# Can you please add timeouts on TestDatasetVolumeCheckerTimeout? You can either add {{@timeout}} annotations on each test method or add an rule at the class level. e.g.
{code}
@Rule
public final Timeout testTimeout = new Timeout(300_000);
{code}
# Instead of calling {{Thread.sleep(DISK_CHECK_TIME)}}, the check callback of the slow volume can wait on a mutex. testDiskCheckTimeout should unblock the waiting thread by signalling the mutex before exiting.
# Looks like TestDatasetVolumeCheckerTimeout#IGNORED_CONTEXT can be removed.
# Nitpick: need space after {{//}} at {//Assert}}. Also at {{//Delay}} and {{//Wait}}.
Two tests failed for me:
{code}
testDiskCheckTimeout(org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout) Time elapsed: 0.474 sec <<< FAILURE!
java.lang.AssertionError:
Expected: is <1L>
but: was <0L>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
at org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout.testDiskCheckTimeout(TestDatasetVolumeCheckerTimeout.java:121)
testTimeoutExceptionIsThrown(org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout) Time elapsed: 0.04 sec <<< FAILURE!
java.lang.AssertionError:
Expected: is <1>
but: was <0>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
at org.apache.hadoop.hdfs.server.datanode.checker.TestDatasetVolumeCheckerTimeout.testTimeoutExceptionIsThrown(TestDatasetVolumeCheckerTimeout.java:162)
{code}
The test coverage looks good. One suggestion - we can move the new unit tests to a TestThrottledAsyncCheckerWithTimeout class, and retain one unit test in TestDatasetVolumeCheckerTimeout to verify that the DFS_DATANODE_DISK_CHECK_TIMEOUT_KEY setting is respected.
> Support Timeout when checking single disk
> -----------------------------------------
>
> Key: HDFS-11511
> URL: https://issues.apache.org/jira/browse/HDFS-11511
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: hdfs
> Reporter: Hanisha Koneru
> Assignee: Hanisha Koneru
> Attachments: HDFS-11511.000.patch, HDFS-11511.001.patch
>
>
> HDFS-11149 introduces parallel checking of FsVolumes by Datanode. Disk checks should have a configurable timeout so that bad disks do not hang and cause long running checks.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org