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 ECFAA17BB5 for ; Thu, 15 Jan 2015 22:40:37 +0000 (UTC) Received: (qmail 57504 invoked by uid 500); 15 Jan 2015 22:40:39 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 57439 invoked by uid 500); 15 Jan 2015 22:40:39 -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 57430 invoked by uid 99); 15 Jan 2015 22:40:39 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Jan 2015 22:40:39 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 676C3E07EA; Thu, 15 Jan 2015 22:40:39 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: kihwal@apache.org To: common-commits@hadoop.apache.org Message-Id: <90d9b9fe471f4e31bb76997d61f74abd@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hadoop git commit: HDFS-7615. Remove longReadLock. Contributed by Kihwal Lee. (cherry picked from commit 44eed6cbc97649c15177f9b36f6b119cc1900f7a) Date: Thu, 15 Jan 2015 22:40:39 +0000 (UTC) Repository: hadoop Updated Branches: refs/heads/branch-2 450561a93 -> 0090157ff HDFS-7615. Remove longReadLock. Contributed by Kihwal Lee. (cherry picked from commit 44eed6cbc97649c15177f9b36f6b119cc1900f7a) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0090157f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0090157f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0090157f Branch: refs/heads/branch-2 Commit: 0090157fffdbbdbd82410d886bb9add74ca1a674 Parents: 450561a Author: Kihwal Lee Authored: Thu Jan 15 16:40:18 2015 -0600 Committer: Kihwal Lee Committed: Thu Jan 15 16:40:18 2015 -0600 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ .../hdfs/server/namenode/FSNamesystem.java | 34 +------------------- .../hdfs/server/namenode/FSNamesystemLock.java | 22 ------------- .../org/apache/hadoop/hdfs/util/RwLock.java | 9 ------ 4 files changed, 3 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0090157f/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index d6375cf..51c2c1f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -250,6 +250,8 @@ Release 2.7.0 - UNRELEASED HDFS-7454. Reduce memory footprint for AclEntries in NameNode. (Vinayakumar B via wheat9) + HDFS-7615. Remove longReadLock (kihwal) + BUG FIXES HDFS-6741. Improve permission denied message when http://git-wip-us.apache.org/repos/asf/hadoop/blob/0090157f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 67dbeb1..8403f37 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -1456,47 +1456,20 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, this.fsLock.readLock().lock(); } @Override - public void longReadLockInterruptibly() throws InterruptedException { - this.fsLock.longReadLock().lockInterruptibly(); - try { - this.fsLock.readLock().lockInterruptibly(); - } catch (InterruptedException ie) { - // In the event we're interrupted while getting the normal FSNS read lock, - // release the long read lock. - this.fsLock.longReadLock().unlock(); - throw ie; - } - } - @Override - public void longReadUnlock() { - this.fsLock.readLock().unlock(); - this.fsLock.longReadLock().unlock(); - } - @Override public void readUnlock() { this.fsLock.readLock().unlock(); } @Override public void writeLock() { - this.fsLock.longReadLock().lock(); this.fsLock.writeLock().lock(); } @Override public void writeLockInterruptibly() throws InterruptedException { - this.fsLock.longReadLock().lockInterruptibly(); - try { - this.fsLock.writeLock().lockInterruptibly(); - } catch (InterruptedException ie) { - // In the event we're interrupted while getting the normal FSNS write - // lock, release the long read lock. - this.fsLock.longReadLock().unlock(); - throw ie; - } + this.fsLock.writeLock().lockInterruptibly(); } @Override public void writeUnlock() { this.fsLock.writeLock().unlock(); - this.fsLock.longReadLock().unlock(); } @Override public boolean hasWriteLock() { @@ -6916,11 +6889,6 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, } @VisibleForTesting - public ReentrantLock getLongReadLockForTests() { - return fsLock.longReadLock; - } - - @VisibleForTesting public ReentrantLock getCpLockForTests() { return cpLock; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/0090157f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystemLock.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystemLock.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystemLock.java index f031284..7e820d8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystemLock.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystemLock.java @@ -34,24 +34,6 @@ class FSNamesystemLock implements ReadWriteLock { @VisibleForTesting protected ReentrantReadWriteLock coarseLock; - /** - * When locking the FSNS for a read that may take a long time, we take this - * lock before taking the regular FSNS read lock. All writers also take this - * lock before taking the FSNS write lock. Regular (short) readers do not - * take this lock at all, instead relying solely on the synchronization of the - * regular FSNS lock. - * - * This scheme ensures that: - * 1) In the case of normal (fast) ops, readers proceed concurrently and - * writers are not starved. - * 2) In the case of long read ops, short reads are allowed to proceed - * concurrently during the duration of the long read. - * - * See HDFS-5064 for more context. - */ - @VisibleForTesting - protected final ReentrantLock longReadLock = new ReentrantLock(true); - FSNamesystemLock(boolean fair) { this.coarseLock = new ReentrantReadWriteLock(fair); } @@ -66,10 +48,6 @@ class FSNamesystemLock implements ReadWriteLock { return coarseLock.writeLock(); } - public Lock longReadLock() { - return longReadLock; - } - public int getReadHoldCount() { return coarseLock.getReadHoldCount(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/0090157f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java index 2792460..e36f0f7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java @@ -22,15 +22,6 @@ public interface RwLock { /** Acquire read lock. */ public void readLock(); - /** - * Acquire the long read lock, unless interrupted while waiting. The long - * read lock should also serve to block all concurrent writers. - **/ - void longReadLockInterruptibly() throws InterruptedException; - - /** Release the long read lock. */ - public void longReadUnlock(); - /** Release read lock. */ public void readUnlock();