From 42f3af1fe6a566175d0fe3834eceac906f5fd335 Mon Sep 17 00:00:00 2001 From: Sean Busbey Date: Wed, 19 Nov 2014 14:23:00 -0600 Subject: [PATCH] HBASE-12535 NPE in WALFactory under contention for getInstance() --- .../src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java | 6 +++++- .../test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java index e1a1625..3500bd0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java @@ -187,7 +187,11 @@ public class WALFactory { if (null != metaProvider) { metaProvider.close(); } - provider.close(); + // close is called on a WALFactory with null provider in the case of contention handling + // within the getInstance method. + if (null != provider) { + provider.close(); + } } /** diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java index b5fd6f4..47b001a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java @@ -152,6 +152,11 @@ public class TestWALFactory { TEST_UTIL.shutdownMiniCluster(); } + @Test + public void canCloseSingleton() throws IOException { + WALFactory.getInstance(conf).close(); + } + /** * Just write multiple logs then split. Before fix for HADOOP-2283, this * would fail. -- 1.7.10.2 (Apple Git-33)