[ https://issues.apache.org/jira/browse/HDFS-8163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14505432#comment-14505432 ]
Hudson commented on HDFS-8163: ------------------------------ FAILURE: Integrated in Hadoop-trunk-Commit #7624 (See [https://builds.apache.org/job/Hadoop-trunk-Commit/7624/]) HDFS-8163. Using monotonicNow for block report scheduling causes test failures on recently restarted systems. (Arpit Agarwal) (arp: rev dfc1c4c303cf15afc6c3361ed9d3238562f73cbd) * hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt * hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPOfferService.java * hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Time.java * hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java * hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBpServiceActorScheduler.java > Using monotonicNow for block report scheduling causes test failures on > recently restarted systems > ------------------------------------------------------------------------------------------------- > > Key: HDFS-8163 > URL: https://issues.apache.org/jira/browse/HDFS-8163 > Project: Hadoop HDFS > Issue Type: Bug > Components: datanode > Affects Versions: 2.6.1 > Reporter: Arpit Agarwal > Assignee: Arpit Agarwal > Priority: Blocker > Fix For: 2.7.1 > > Attachments: HDFS-8163.01.patch, HDFS-8163.02.patch, > HDFS-8163.03.patch > > > {{BPServiceActor#blockReport}} has the following check: > {code} > List<DatanodeCommand> blockReport() throws IOException { > // send block report if timer has expired. > final long startTime = monotonicNow(); > if (startTime - lastBlockReport <= dnConf.blockReportInterval) { > return null; > } > {code} > Many tests trigger an immediate block report via > {{BPServiceActor#triggerBlockReportForTests}} which sets {{lastBlockReport = > 0}}. However if the machine was restarted recently then startTime may be less > than {{dnConf.blockReportInterval}} and the block report is not sent. > {{Time#monotonicNow}} uses {{System#nanoTime}} which represents time elapsed > since an arbitrary origin. The time should be used only for comparison with > other values returned by {{System#nanoTime}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)