From common-commits-return-19014-apmail-hadoop-common-commits-archive=hadoop.apache.org@hadoop.apache.org Sun Sep 9 06:45:26 2012 Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BB04BD703 for ; Sun, 9 Sep 2012 06:45:26 +0000 (UTC) Received: (qmail 30424 invoked by uid 500); 9 Sep 2012 06:45:26 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 30137 invoked by uid 500); 9 Sep 2012 06:45:22 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 30108 invoked by uid 99); 9 Sep 2012 06:45:20 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 09 Sep 2012 06:45:20 +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; Sun, 09 Sep 2012 06:45:18 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id CD5B523889DA for ; Sun, 9 Sep 2012 06:44:34 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1382413 - in /hadoop/common/branches/branch-1: CHANGES.txt src/hdfs/org/apache/hadoop/hdfs/DFSClient.java Date: Sun, 09 Sep 2012 06:44:34 -0000 To: common-commits@hadoop.apache.org From: eli@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120909064434.CD5B523889DA@eris.apache.org> Author: eli Date: Sun Sep 9 06:44:34 2012 New Revision: 1382413 URL: http://svn.apache.org/viewvc?rev=1382413&view=rev Log: HDFS-2757. Cannot read a local block that's being written to when using the local read short circuit. Contributed by Jean-Daniel Cryans Modified: hadoop/common/branches/branch-1/CHANGES.txt hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java Modified: hadoop/common/branches/branch-1/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1382413&r1=1382412&r2=1382413&view=diff ============================================================================== --- hadoop/common/branches/branch-1/CHANGES.txt (original) +++ hadoop/common/branches/branch-1/CHANGES.txt Sun Sep 9 06:44:34 2012 @@ -228,6 +228,9 @@ Release 1.2.0 - unreleased HADOOP-8745. Incorrect version numbers in hadoop-core POM. (Matthias Friedrich via eli) + HDFS-2757. Cannot read a local block that's being written to when + using the local read short circuit. (Jean-Daniel Cryans via eli) + Release 1.1.0 - unreleased INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java?rev=1382413&r1=1382412&r2=1382413&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java (original) +++ hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java Sun Sep 9 06:44:34 2012 @@ -2019,6 +2019,10 @@ public class DFSClient implements FSCons return (locatedBlocks == null) ? 0 : locatedBlocks.getFileLength(); } + private synchronized boolean blockUnderConstruction() { + return locatedBlocks.isUnderConstruction(); + } + /** * Returns the datanode from which the stream is currently reading. */ @@ -2130,10 +2134,9 @@ public class DFSClient implements FSCons private boolean shouldTryShortCircuitRead(InetSocketAddress targetAddr) throws IOException { - if (shortCircuitLocalReads && isLocalAddress(targetAddr)) { - return true; - } - return false; + // Can't local read a block under construction, see HDFS-2757 + return shortCircuitLocalReads && !blockUnderConstruction() + && isLocalAddress(targetAddr); } /**