Return-Path: X-Original-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A22BB927D for ; Thu, 27 Oct 2011 22:47:50 +0000 (UTC) Received: (qmail 81912 invoked by uid 500); 27 Oct 2011 22:47:50 -0000 Delivered-To: apmail-hadoop-hdfs-commits-archive@hadoop.apache.org Received: (qmail 81885 invoked by uid 500); 27 Oct 2011 22:47:50 -0000 Mailing-List: contact hdfs-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-dev@hadoop.apache.org Delivered-To: mailing list hdfs-commits@hadoop.apache.org Received: (qmail 81877 invoked by uid 99); 27 Oct 2011 22:47:50 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2011 22:47:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2011 22:47:49 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 0E963238890A; Thu, 27 Oct 2011 22:47:29 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1190072 - in /hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs: ./ src/main/java/org/apache/hadoop/hdfs/server/datanode/ Date: Thu, 27 Oct 2011 22:47:28 -0000 To: hdfs-commits@hadoop.apache.org From: todd@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111027224729.0E963238890A@eris.apache.org> Author: todd Date: Thu Oct 27 22:47:28 2011 New Revision: 1190072 URL: http://svn.apache.org/viewvc?rev=1190072&view=rev Log: HDFS-2500. Avoid file system operations in BPOfferService thread while processing deletes. Contributed by Todd Lipcon. Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDatasetAsyncDiskService.java Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1190072&r1=1190071&r2=1190072&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Oct 27 22:47:28 2011 @@ -761,6 +761,9 @@ Release 0.23.0 - Unreleased HDFS-2118. Couple dfs data dir improvements. (eli) + HDFS-2500. Avoid file system operations in BPOfferService thread while + processing deletes. (todd) + BUG FIXES HDFS-2344. Fix the TestOfflineEditsViewer test failure in 0.23 branch. Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1190072&r1=1190071&r2=1190072&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java Thu Oct 27 22:47:28 2011 @@ -1108,8 +1108,15 @@ public class DataNode extends Configured if (!heartbeatsDisabledForTests) { DatanodeCommand[] cmds = sendHeartBeat(); metrics.addHeartbeat(now() - startTime); + + long startProcessCommands = now(); if (!processCommand(cmds)) continue; + long endProcessCommands = now(); + if (endProcessCommands - startProcessCommands > 2000) { + LOG.info("Took " + (endProcessCommands - startProcessCommands) + + "ms to process " + cmds.length + " commands from NN"); + } } } Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java?rev=1190072&r1=1190071&r2=1190072&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java Thu Oct 27 22:47:28 2011 @@ -2088,10 +2088,9 @@ public class FSDataset implements FSData volumeMap.remove(bpid, invalidBlks[i]); } File metaFile = getMetaFile(f, invalidBlks[i].getGenerationStamp()); - long dfsBytes = f.length() + metaFile.length(); // Delete the block asynchronously to make sure we can do it fast enough - asyncDiskService.deleteAsync(v, bpid, f, metaFile, dfsBytes, + asyncDiskService.deleteAsync(v, bpid, f, metaFile, invalidBlks[i].toString()); } if (error) { Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDatasetAsyncDiskService.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDatasetAsyncDiskService.java?rev=1190072&r1=1190071&r2=1190072&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDatasetAsyncDiskService.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FSDatasetAsyncDiskService.java Thu Oct 27 22:47:28 2011 @@ -148,11 +148,11 @@ class FSDatasetAsyncDiskService { * dfsUsed statistics accordingly. */ void deleteAsync(FSDataset.FSVolume volume, String bpid, File blockFile, - File metaFile, long dfsBytes, String blockName) { + File metaFile, String blockName) { DataNode.LOG.info("Scheduling block " + blockName + " file " + blockFile + " for deletion"); ReplicaFileDeleteTask deletionTask = - new ReplicaFileDeleteTask(volume, bpid, blockFile, metaFile, dfsBytes, + new ReplicaFileDeleteTask(volume, bpid, blockFile, metaFile, blockName); execute(volume.getCurrentDir(), deletionTask); } @@ -165,16 +165,14 @@ class FSDatasetAsyncDiskService { final String blockPoolId; final File blockFile; final File metaFile; - final long dfsBytes; final String blockName; ReplicaFileDeleteTask(FSDataset.FSVolume volume, String bpid, - File blockFile, File metaFile, long dfsBytes, String blockName) { + File blockFile, File metaFile, String blockName) { this.volume = volume; this.blockPoolId = bpid; this.blockFile = blockFile; this.metaFile = metaFile; - this.dfsBytes = dfsBytes; this.blockName = blockName; } @@ -192,6 +190,7 @@ class FSDatasetAsyncDiskService { @Override public void run() { + long dfsBytes = blockFile.length() + metaFile.length(); if ( !blockFile.delete() || ( !metaFile.delete() && metaFile.exists() ) ) { DataNode.LOG.warn("Unexpected error trying to delete block " + blockPoolId + " " + blockName + " at file " + blockFile