Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id ABE8D200BA6 for ; Tue, 4 Oct 2016 00:14:03 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id AA940160AED; Mon, 3 Oct 2016 22:14:03 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 05A2D160AEC for ; Tue, 4 Oct 2016 00:14:02 +0200 (CEST) Received: (qmail 79717 invoked by uid 500); 3 Oct 2016 22:14:01 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 79433 invoked by uid 99); 3 Oct 2016 22:14:00 -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; Mon, 03 Oct 2016 22:14:00 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 93808E0329; Mon, 3 Oct 2016 22:14:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: subru@apache.org To: common-commits@hadoop.apache.org Date: Mon, 03 Oct 2016 22:14:00 -0000 Message-Id: <16b60f0e4c9448ed94bb166895bf7e0c@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [01/50] [abbrv] hadoop git commit: HADOOP-13599. s3a close() to be non-synchronized, so avoid risk of deadlock on shutdown. Contributed by Steve Loughran. [Forced Update!] archived-at: Mon, 03 Oct 2016 22:14:03 -0000 Repository: hadoop Updated Branches: refs/heads/YARN-2915 6f9133893 -> f43ad972e (forced update) HADOOP-13599. s3a close() to be non-synchronized, so avoid risk of deadlock on shutdown. Contributed by Steve Loughran. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/47f80922 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/47f80922 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/47f80922 Branch: refs/heads/YARN-2915 Commit: 47f80922dc7cb2fa6d084e6fb1f354c4ec1d4c69 Parents: 84c6264 Author: Chris Nauroth Authored: Wed Sep 28 15:53:17 2016 -0700 Committer: Chris Nauroth Committed: Wed Sep 28 16:19:32 2016 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java | 8 +++++++- .../java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/47f80922/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java ---------------------------------------------------------------------- diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java index 6a6c26b..dffef15 100644 --- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java +++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.Objects; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; @@ -121,6 +122,7 @@ public class S3AFileSystem extends FileSystem { private S3AStorageStatistics storageStatistics; private long readAhead; private S3AInputPolicy inputPolicy; + private final AtomicBoolean closed = new AtomicBoolean(false); // The maximum number of entries that can be deleted in any call to s3 private static final int MAX_ENTRIES_TO_DELETE = 1000; @@ -1414,7 +1416,11 @@ public class S3AFileSystem extends FileSystem { * @throws IOException IO problem */ @Override - public synchronized void close() throws IOException { + public void close() throws IOException { + if (closed.getAndSet(true)) { + // already closed + return; + } try { super.close(); } finally { http://git-wip-us.apache.org/repos/asf/hadoop/blob/47f80922/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java ---------------------------------------------------------------------- diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java index fca8e49..b08bfe9 100644 --- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java +++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AConfiguration.java @@ -409,6 +409,14 @@ public class ITestS3AConfiguration { awsConf.getUserAgent()); } + @Test + public void testCloseIdempotent() throws Throwable { + conf = new Configuration(); + fs = S3ATestUtils.createTestFileSystem(conf); + fs.close(); + fs.close(); + } + /** * Reads and returns a field from an object using reflection. If the field * cannot be found, is null, or is not the expected type, then this method --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org