You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2022/09/16 14:58:05 UTC
[hbase] branch master updated: HBASE-27373 Fix new spotbugs warnings after upgrading spotbugs to 4.7.2 (#4787)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 6f0761a6681 HBASE-27373 Fix new spotbugs warnings after upgrading spotbugs to 4.7.2 (#4787)
6f0761a6681 is described below
commit 6f0761a6681bc3bc8c29621e917d8ba5c026207f
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Fri Sep 16 22:57:54 2022 +0800
HBASE-27373 Fix new spotbugs warnings after upgrading spotbugs to 4.7.2 (#4787)
Signed-off-by: Wellington Chevreuil <wc...@apache.org>
---
.../hbase/exceptions/ClientExceptionsUtil.java | 5 ++
.../hbase/shaded/protobuf/RequestConverter.java | 63 ++++------------------
.../hbase/io/crypto/CryptoCipherProvider.java | 2 +
.../hbase/io/crypto/DefaultCipherProvider.java | 2 +
.../apache/hadoop/hbase/io/util/BlockIOUtils.java | 4 --
.../apache/hadoop/hbase/security/Superusers.java | 26 +++++----
hbase-metrics/pom.xml | 6 +++
.../hbase/metrics/impl/FastLongHistogram.java | 6 +--
.../org/apache/hadoop/hbase/rest/RESTServlet.java | 6 ++-
.../java/org/apache/hadoop/hbase/io/FileLink.java | 44 ++++-----------
.../hadoop/hbase/io/hfile/FixedFileTrailer.java | 2 +-
.../apache/hadoop/hbase/io/hfile/HFileBlock.java | 2 +-
.../hadoop/hbase/io/hfile/HFilePreadReader.java | 4 --
.../apache/hadoop/hbase/io/hfile/HFileUtil.java | 42 ---------------
.../hadoop/hbase/io/hfile/PrefetchExecutor.java | 2 +
.../hbase/namequeues/NamedQueueRecorder.java | 4 +-
.../hadoop/hbase/quotas/NoOpRegionSizeStore.java | 2 +
.../MissingSnapshotViolationPolicyEnforcement.java | 2 +
.../hadoop/hbase/regionserver/ChunkCreator.java | 5 +-
.../hadoop/hbase/regionserver/HMobStore.java | 21 ++------
.../hbase/regionserver/NoLimitScannerContext.java | 6 ++-
.../compactions/StripeCompactionPolicy.java | 7 ++-
.../hbase/regionserver/wal/ProtobufLogWriter.java | 11 ++--
.../replication/regionserver/WALEntryStream.java | 4 ++
.../hbase/security/token/FsDelegationToken.java | 7 +--
.../security/visibility/VisibilityLabelsCache.java | 8 ++-
.../apache/hadoop/hbase/util/BloomFilterUtil.java | 2 +
.../org/apache/hadoop/hbase/util/HBaseFsck.java | 5 +-
.../hadoop/hbase/wal/AbstractFSWALProvider.java | 5 +-
.../hadoop/hbase/SingleProcessHBaseCluster.java | 2 -
.../org/apache/hadoop/hbase/MiniHBaseCluster.java | 2 -
31 files changed, 107 insertions(+), 202 deletions(-)
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java
index 71999ad269f..fd9936dc502 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hbase.exceptions;
+import com.google.errorprone.annotations.RestrictedApi;
import java.io.EOFException;
import java.io.IOException;
import java.io.SyncFailedException;
@@ -120,6 +121,10 @@ public final class ClientExceptionsUtil {
* For test only. Usually you should use the {@link #isConnectionException(Throwable)} method
* below.
*/
+ @RestrictedApi(explanation = "Should only be called in tests", link = "",
+ allowedOnPath = ".*/src/test/.*")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "test only")
public static Set<Class<? extends Throwable>> getConnectionExceptionTypes() {
return CONNECTION_EXCEPTION_TYPES;
}
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java
index 13e85f91c95..f678a43986d 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java
@@ -839,32 +839,20 @@ public final class RequestConverter {
return builder.build();
}
- /**
- * @see #buildRollWALWriterRequest()
- */
- private static RollWALWriterRequest ROLL_WAL_WRITER_REQUEST =
- RollWALWriterRequest.newBuilder().build();
-
/**
* Create a new RollWALWriterRequest
* @return a ReplicateWALEntryRequest
*/
public static RollWALWriterRequest buildRollWALWriterRequest() {
- return ROLL_WAL_WRITER_REQUEST;
+ return RollWALWriterRequest.getDefaultInstance();
}
- /**
- * @see #buildGetServerInfoRequest()
- */
- private static GetServerInfoRequest GET_SERVER_INFO_REQUEST =
- GetServerInfoRequest.newBuilder().build();
-
/**
* Create a new GetServerInfoRequest
* @return a GetServerInfoRequest
*/
public static GetServerInfoRequest buildGetServerInfoRequest() {
- return GET_SERVER_INFO_REQUEST;
+ return GetServerInfoRequest.getDefaultInstance();
}
/**
@@ -1241,18 +1229,12 @@ public final class RequestConverter {
.addAllOptions(ClusterMetricsBuilder.toOptions(options)).build();
}
- /**
- * @see #buildCatalogScanRequest
- */
- private static final RunCatalogScanRequest CATALOG_SCAN_REQUEST =
- RunCatalogScanRequest.newBuilder().build();
-
/**
* Creates a request for running a catalog scan
* @return A {@link RunCatalogScanRequest}
*/
public static RunCatalogScanRequest buildCatalogScanRequest() {
- return CATALOG_SCAN_REQUEST;
+ return RunCatalogScanRequest.getDefaultInstance();
}
/**
@@ -1263,32 +1245,20 @@ public final class RequestConverter {
return EnableCatalogJanitorRequest.newBuilder().setEnable(enable).build();
}
- /**
- * @see #buildIsCatalogJanitorEnabledRequest()
- */
- private static final IsCatalogJanitorEnabledRequest IS_CATALOG_JANITOR_ENABLED_REQUEST =
- IsCatalogJanitorEnabledRequest.newBuilder().build();
-
/**
* Creates a request for querying the master whether the catalog janitor is enabled
* @return A {@link IsCatalogJanitorEnabledRequest}
*/
public static IsCatalogJanitorEnabledRequest buildIsCatalogJanitorEnabledRequest() {
- return IS_CATALOG_JANITOR_ENABLED_REQUEST;
+ return IsCatalogJanitorEnabledRequest.getDefaultInstance();
}
- /**
- * @see #buildRunCleanerChoreRequest()
- */
- private static final RunCleanerChoreRequest CLEANER_CHORE_REQUEST =
- RunCleanerChoreRequest.newBuilder().build();
-
/**
* Creates a request for running cleaner chore
* @return A {@link RunCleanerChoreRequest}
*/
public static RunCleanerChoreRequest buildRunCleanerChoreRequest() {
- return CLEANER_CHORE_REQUEST;
+ return RunCleanerChoreRequest.getDefaultInstance();
}
/**
@@ -1299,18 +1269,12 @@ public final class RequestConverter {
return SetCleanerChoreRunningRequest.newBuilder().setOn(on).build();
}
- /**
- * @see #buildIsCleanerChoreEnabledRequest()
- */
- private static final IsCleanerChoreEnabledRequest IS_CLEANER_CHORE_ENABLED_REQUEST =
- IsCleanerChoreEnabledRequest.newBuilder().build();
-
/**
* Creates a request for querying the master whether the cleaner chore is enabled
* @return A {@link IsCleanerChoreEnabledRequest}
*/
public static IsCleanerChoreEnabledRequest buildIsCleanerChoreEnabledRequest() {
- return IS_CLEANER_CHORE_ENABLED_REQUEST;
+ return IsCleanerChoreEnabledRequest.getDefaultInstance();
}
/**
@@ -1530,34 +1494,25 @@ public final class RequestConverter {
return builder.build();
}
- private static final GetSpaceQuotaRegionSizesRequest GET_SPACE_QUOTA_REGION_SIZES_REQUEST =
- GetSpaceQuotaRegionSizesRequest.newBuilder().build();
-
/**
* Returns a {@link GetSpaceQuotaRegionSizesRequest} object.
*/
public static GetSpaceQuotaRegionSizesRequest buildGetSpaceQuotaRegionSizesRequest() {
- return GET_SPACE_QUOTA_REGION_SIZES_REQUEST;
+ return GetSpaceQuotaRegionSizesRequest.getDefaultInstance();
}
- private static final GetSpaceQuotaSnapshotsRequest GET_SPACE_QUOTA_SNAPSHOTS_REQUEST =
- GetSpaceQuotaSnapshotsRequest.newBuilder().build();
-
/**
* Returns a {@link GetSpaceQuotaSnapshotsRequest} object.
*/
public static GetSpaceQuotaSnapshotsRequest buildGetSpaceQuotaSnapshotsRequest() {
- return GET_SPACE_QUOTA_SNAPSHOTS_REQUEST;
+ return GetSpaceQuotaSnapshotsRequest.getDefaultInstance();
}
- private static final GetQuotaStatesRequest GET_QUOTA_STATES_REQUEST =
- GetQuotaStatesRequest.newBuilder().build();
-
/**
* Returns a {@link GetQuotaStatesRequest} object.
*/
public static GetQuotaStatesRequest buildGetQuotaStatesRequest() {
- return GET_QUOTA_STATES_REQUEST;
+ return GetQuotaStatesRequest.getDefaultInstance();
}
public static DecommissionRegionServersRequest
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/CryptoCipherProvider.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/CryptoCipherProvider.java
index 8eb4bdea71b..7f5c58883f2 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/CryptoCipherProvider.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/CryptoCipherProvider.java
@@ -30,6 +30,8 @@ public final class CryptoCipherProvider implements CipherProvider {
private static CryptoCipherProvider instance;
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static CryptoCipherProvider getInstance() {
if (instance != null) {
return instance;
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/DefaultCipherProvider.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/DefaultCipherProvider.java
index 33e19575d94..a4c3f3b7ca8 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/DefaultCipherProvider.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/DefaultCipherProvider.java
@@ -30,6 +30,8 @@ public final class DefaultCipherProvider implements CipherProvider {
private static DefaultCipherProvider instance;
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static DefaultCipherProvider getInstance() {
if (instance != null) {
return instance;
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/BlockIOUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/BlockIOUtils.java
index 86c6317556b..9641c72dfbc 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/BlockIOUtils.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/BlockIOUtils.java
@@ -367,10 +367,6 @@ public final class BlockIOUtils {
} catch (InvocationTargetException e) {
throw new IOException("Encountered an exception when invoking ByteBuffer positioned read"
+ " when trying to read " + bytesRead + " bytes from position " + position, e);
- } catch (NullPointerException e) {
- throw new IOException("something is null");
- } catch (Exception e) {
- throw e;
}
if (ret < 0) {
throw new IOException("Premature EOF from inputStream (positional read returned " + ret
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java
index 417c59c7d02..d4f3f16478f 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java
@@ -19,14 +19,14 @@ package org.apache.hadoop.hbase.security;
import java.io.IOException;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.AuthUtil;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;
+
/**
* Keeps lists of superusers and super groups loaded from HBase configuration, checks if certain
* user is regarded as superuser.
@@ -38,8 +38,8 @@ public final class Superusers {
/** Configuration key for superusers */
public static final String SUPERUSER_CONF_KEY = "hbase.superuser"; // Not getting a name
- private static Set<String> superUsers;
- private static Set<String> superGroups;
+ private static ImmutableSet<String> superUsers;
+ private static ImmutableSet<String> superGroups;
private static User systemUser;
private Superusers() {
@@ -53,8 +53,8 @@ public final class Superusers {
* @throws IllegalStateException if current user is null
*/
public static void initialize(Configuration conf) throws IOException {
- superUsers = new HashSet<>();
- superGroups = new HashSet<>();
+ ImmutableSet.Builder<String> superUsersBuilder = ImmutableSet.builder();
+ ImmutableSet.Builder<String> superGroupsBuilder = ImmutableSet.builder();
systemUser = User.getCurrent();
if (systemUser == null) {
@@ -64,17 +64,19 @@ public final class Superusers {
String currentUser = systemUser.getShortName();
LOG.trace("Current user name is {}", currentUser);
- superUsers.add(currentUser);
+ superUsersBuilder.add(currentUser);
String[] superUserList = conf.getStrings(SUPERUSER_CONF_KEY, new String[0]);
for (String name : superUserList) {
if (AuthUtil.isGroupPrincipal(name)) {
// Let's keep the '@' for distinguishing from user.
- superGroups.add(name);
+ superGroupsBuilder.add(name);
} else {
- superUsers.add(name);
+ superUsersBuilder.add(name);
}
}
+ superUsers = superUsersBuilder.build();
+ superGroups = superGroupsBuilder.build();
}
/**
@@ -113,14 +115,20 @@ public final class Superusers {
return superUsers.contains(user) || superGroups.contains(user);
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "immutable")
public static Collection<String> getSuperUsers() {
return superUsers;
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "immutable")
public static Collection<String> getSuperGroups() {
return superGroups;
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "by design")
public static User getSystemUser() {
return systemUser;
}
diff --git a/hbase-metrics/pom.xml b/hbase-metrics/pom.xml
index ee7a61ed931..ad8d2367649 100644
--- a/hbase-metrics/pom.xml
+++ b/hbase-metrics/pom.xml
@@ -76,6 +76,12 @@
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.github.stephenc.findbugs</groupId>
+ <artifactId>findbugs-annotations</artifactId>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.java
index b1b47e3904e..768435d1eb1 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.java
@@ -138,6 +138,8 @@ public class FastLongHistogram {
/**
* Computes the quantiles give the ratios.
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "FL_FLOATS_AS_LOOP_COUNTERS",
+ justification = "valid usage")
public long[] getQuantiles(double[] quantiles) {
if (!hasData) {
// No data yet.
@@ -266,10 +268,6 @@ public class FastLongHistogram {
this.bins = new Bins(bins, numOfBins, 0.01, 0.999);
}
- private FastLongHistogram(Bins bins) {
- this.bins = bins;
- }
-
/**
* Adds a value to the histogram.
*/
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServlet.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServlet.java
index 66834f36176..79760aead9d 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServlet.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServlet.java
@@ -53,6 +53,8 @@ public class RESTServlet implements Constants {
}
/** Returns the RESTServlet singleton instance */
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public synchronized static RESTServlet getInstance() {
assert (INSTANCE != null);
return INSTANCE;
@@ -66,8 +68,10 @@ public class RESTServlet implements Constants {
/**
* @param conf Existing configuration to use in rest servlet
* @param userProvider the login user provider
- * @return the RESTServlet singleton instance n
+ * @return the RESTServlet singleton instance
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public synchronized static RESTServlet getInstance(Configuration conf, UserProvider userProvider)
throws IOException {
if (INSTANCE == null) {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FileLink.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FileLink.java
index 8fbaa775391..86f8f935334 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FileLink.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FileLink.java
@@ -117,12 +117,10 @@ public class FileLink {
res = in.read();
} catch (FileNotFoundException e) {
res = tryOpen().read();
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- res = tryOpen().read();
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- res = tryOpen().read();
}
- if (res > 0) pos += 1;
+ if (res > 0) {
+ pos += 1;
+ }
return res;
}
@@ -138,12 +136,10 @@ public class FileLink {
n = in.read(b, off, len);
} catch (FileNotFoundException e) {
n = tryOpen().read(b, off, len);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- n = tryOpen().read(b, off, len);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- n = tryOpen().read(b, off, len);
}
- if (n > 0) pos += n;
+ if (n > 0) {
+ pos += n;
+ }
assert (in.getPos() == pos);
return n;
}
@@ -155,10 +151,6 @@ public class FileLink {
n = in.read(position, buffer, offset, length);
} catch (FileNotFoundException e) {
n = tryOpen().read(position, buffer, offset, length);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- n = tryOpen().read(position, buffer, offset, length);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- n = tryOpen().read(position, buffer, offset, length);
}
return n;
}
@@ -174,10 +166,6 @@ public class FileLink {
in.readFully(position, buffer, offset, length);
} catch (FileNotFoundException e) {
tryOpen().readFully(position, buffer, offset, length);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- tryOpen().readFully(position, buffer, offset, length);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- tryOpen().readFully(position, buffer, offset, length);
}
}
@@ -189,13 +177,11 @@ public class FileLink {
skipped = in.skip(n);
} catch (FileNotFoundException e) {
skipped = tryOpen().skip(n);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- skipped = tryOpen().skip(n);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- skipped = tryOpen().skip(n);
}
- if (skipped > 0) pos += skipped;
+ if (skipped > 0) {
+ pos += skipped;
+ }
return skipped;
}
@@ -205,10 +191,6 @@ public class FileLink {
return in.available();
} catch (FileNotFoundException e) {
return tryOpen().available();
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- return tryOpen().available();
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- return tryOpen().available();
}
}
@@ -218,10 +200,6 @@ public class FileLink {
in.seek(pos);
} catch (FileNotFoundException e) {
tryOpen().seek(pos);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- tryOpen().seek(pos);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- tryOpen().seek(pos);
}
this.pos = pos;
}
@@ -238,10 +216,6 @@ public class FileLink {
res = in.seekToNewSource(targetPos);
} catch (FileNotFoundException e) {
res = tryOpen().seekToNewSource(targetPos);
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- res = tryOpen().seekToNewSource(targetPos);
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- res = tryOpen().seekToNewSource(targetPos);
}
if (res) pos = targetPos;
return res;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java
index b358ad60689..134485135ed 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java
@@ -388,7 +388,7 @@ public class FixedFileTrailer {
bufferSize = (int) fileSize;
}
- HFileUtil.seekOnMultipleSources(istream, seekPoint);
+ istream.seek(seekPoint);
ByteBuffer buf = ByteBuffer.allocate(bufferSize);
istream.readFully(buf.array(), buf.arrayOffset(), buf.arrayOffset() + buf.limit());
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
index 8e04580874f..097aaff27c8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
@@ -1471,7 +1471,7 @@ public class HFileBlock implements Cacheable {
boolean peekIntoNextBlock, long fileOffset, boolean pread) throws IOException {
if (!pread) {
// Seek + read. Better for scanning.
- HFileUtil.seekOnMultipleSources(istream, fileOffset);
+ istream.seek(fileOffset);
long realOffset = istream.getPos();
if (realOffset != fileOffset) {
throw new IOException("Tried to seek to " + fileOffset + " to read " + size
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePreadReader.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePreadReader.java
index 25627c34f51..98401c46bee 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePreadReader.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePreadReader.java
@@ -73,10 +73,6 @@ public class HFilePreadReader extends HFileReaderImpl {
if (LOG.isTraceEnabled()) {
LOG.trace("Prefetch " + getPathOffsetEndStr(path, offset, end), e);
}
- } catch (NullPointerException e) {
- LOG.warn(
- "Stream moved/closed or prefetch cancelled?" + getPathOffsetEndStr(path, offset, end),
- e);
} catch (Exception e) {
// Other exceptions are interesting
LOG.warn("Prefetch " + getPathOffsetEndStr(path, offset, end), e);
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java
deleted file mode 100644
index 612f127e11e..00000000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.io.hfile;
-
-import java.io.IOException;
-import org.apache.hadoop.fs.FSDataInputStream;
-import org.apache.yetus.audience.InterfaceAudience;
-
-@InterfaceAudience.Private
-class HFileUtil {
-
- /**
- * guards against NullPointer utility which tries to seek on the DFSIS and will try an alternative
- * source if the FSDataInputStream throws an NPE HBASE-17501 nnn
- */
- static public void seekOnMultipleSources(FSDataInputStream istream, long offset)
- throws IOException {
- try {
- // attempt to seek inside of current blockReader
- istream.seek(offset);
- } catch (NullPointerException e) {
- // retry the seek on an alternate copy of the data
- // this can occur if the blockReader on the DFSInputStream is null
- istream.seekToNewSource(offset);
- }
- }
-}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java
index 8f10a0f9782..9aafe7a7b6e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java
@@ -145,6 +145,8 @@ public final class PrefetchExecutor {
return true;
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "OBL_UNSATISFIED_OBLIGATION",
+ justification = "false positive, try-with-resources ensures close is called.")
public static void persistToFile(String path) throws IOException {
prefetchedFileListPath = path;
if (prefetchedFileListPath == null) {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/namequeues/NamedQueueRecorder.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/namequeues/NamedQueueRecorder.java
index 38f63fd09be..efe512b1a85 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/namequeues/NamedQueueRecorder.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/namequeues/NamedQueueRecorder.java
@@ -43,7 +43,7 @@ public class NamedQueueRecorder {
private final Disruptor<RingBufferEnvelope> disruptor;
private final LogEventHandler logEventHandler;
- private static NamedQueueRecorder namedQueueRecorder;
+ private static volatile NamedQueueRecorder namedQueueRecorder;
private static boolean isInit = false;
private static final Object LOCK = new Object();
@@ -71,6 +71,8 @@ public class NamedQueueRecorder {
this.disruptor.start();
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static NamedQueueRecorder getInstance(Configuration conf) {
if (namedQueueRecorder != null) {
return namedQueueRecorder;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/NoOpRegionSizeStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/NoOpRegionSizeStore.java
index dcc32d766b9..cb463b8729d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/NoOpRegionSizeStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/NoOpRegionSizeStore.java
@@ -32,6 +32,8 @@ public final class NoOpRegionSizeStore implements RegionSizeStore {
private NoOpRegionSizeStore() {
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static NoOpRegionSizeStore getInstance() {
return INSTANCE;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/policies/MissingSnapshotViolationPolicyEnforcement.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/policies/MissingSnapshotViolationPolicyEnforcement.java
index c747d0c8b3d..732318ac870 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/policies/MissingSnapshotViolationPolicyEnforcement.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/policies/MissingSnapshotViolationPolicyEnforcement.java
@@ -39,6 +39,8 @@ public final class MissingSnapshotViolationPolicyEnforcement
private MissingSnapshotViolationPolicyEnforcement() {
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static SpaceViolationPolicyEnforcement getInstance() {
return SINGLETON;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
index a0dbf4e59e9..ba9cd9d13ec 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
@@ -114,7 +114,8 @@ public class ChunkCreator {
* @param heapMemoryManager the heapmemory manager
* @return singleton MSLABChunkCreator
*/
- @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "LI_LAZY_INIT_STATIC",
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
+ value = { "LI_LAZY_INIT_STATIC", "MS_EXPOSE_REP" },
justification = "Method is called by single thread at the starting of RS")
public static ChunkCreator initialize(int chunkSize, boolean offheap, long globalMemStoreSize,
float poolSizePercentage, float initialCountPercentage, HeapMemoryManager heapMemoryManager,
@@ -127,6 +128,8 @@ public class ChunkCreator {
return instance;
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static ChunkCreator getInstance() {
return instance;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HMobStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HMobStore.java
index 13b7cc022bb..b5396110db2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HMobStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HMobStore.java
@@ -400,7 +400,7 @@ public class HMobStore extends HStore {
private MobCell readCell(List<Path> locations, String fileName, Cell search,
boolean cacheMobBlocks, long readPt, boolean readEmptyValueOnMobCellMiss) throws IOException {
FileSystem fs = getFileSystem();
- Throwable throwable = null;
+ IOException ioe = null;
for (Path location : locations) {
MobFile file = null;
Path path = new Path(location, fileName);
@@ -411,7 +411,7 @@ public class HMobStore extends HStore {
: file.readCell(search, cacheMobBlocks);
} catch (IOException e) {
mobFileCache.evictFile(fileName);
- throwable = e;
+ ioe = e;
if (
(e instanceof FileNotFoundException) || (e.getCause() instanceof FileNotFoundException)
) {
@@ -422,14 +422,6 @@ public class HMobStore extends HStore {
} else {
throw e;
}
- } catch (NullPointerException e) { // HDFS 1.x - DFSInputStream.getBlockAt()
- mobFileCache.evictFile(fileName);
- LOG.debug("Fail to read the cell", e);
- throwable = e;
- } catch (AssertionError e) { // assert in HDFS 1.x - DFSInputStream.getBlockAt()
- mobFileCache.evictFile(fileName);
- LOG.debug("Fail to read the cell", e);
- throwable = e;
} finally {
if (file != null) {
mobFileCache.closeFile(file);
@@ -441,18 +433,15 @@ public class HMobStore extends HStore {
if (readEmptyValueOnMobCellMiss) {
return null;
} else if (
- (throwable instanceof FileNotFoundException)
- || (throwable.getCause() instanceof FileNotFoundException)
+ (ioe instanceof FileNotFoundException) || (ioe.getCause() instanceof FileNotFoundException)
) {
// The region is re-opened when FileNotFoundException is thrown.
// This is not necessary when MOB files cannot be found, because the store files
// in a region only contain the references to MOB files and a re-open on a region
// doesn't help fix the lost MOB files.
- throw new DoNotRetryIOException(throwable);
- } else if (throwable instanceof IOException) {
- throw (IOException) throwable;
+ throw new DoNotRetryIOException(ioe);
} else {
- throw new IOException(throwable);
+ throw ioe;
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/NoLimitScannerContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/NoLimitScannerContext.java
index 5b92cc07b57..94c97374305 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/NoLimitScannerContext.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/NoLimitScannerContext.java
@@ -45,9 +45,11 @@ public class NoLimitScannerContext extends ScannerContext {
private static final ScannerContext NO_LIMIT = new NoLimitScannerContext();
/**
- * @return The static, immutable instance of {@link NoLimitScannerContext} to be used whenever
- * limits should not be enforced
+ * Returns the static, immutable instance of {@link NoLimitScannerContext} to be used whenever
+ * limits should not be enforced
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static final ScannerContext getInstance() {
return NO_LIMIT;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.java
index adcd41f3e26..f5be2b38038 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.java
@@ -421,6 +421,8 @@ public class StripeCompactionPolicy extends CompactionPolicy {
return totalSize;
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "FL_FLOATS_AS_LOOP_COUNTERS",
+ justification = "valid usage")
private Pair<Long, Integer> estimateTargetKvs(Collection<HStoreFile> files, double splitCount) {
// If the size is larger than what we target, we don't want to split into proportionally
// larger parts and then have to split again very soon. So, we will increase the multiplier
@@ -433,7 +435,10 @@ public class StripeCompactionPolicy extends CompactionPolicy {
while (ratio > 1.0) {
// Ratio of real to desired size if we increase the multiplier.
double newRatio = totalSize / ((splitCount + 1.0) * targetPartSize);
- if ((1.0 / newRatio) >= ratio) break; // New ratio is < 1.0, but further than the last one.
+ if ((1.0 / newRatio) >= ratio) {
+ // New ratio is < 1.0, but further than the last one.
+ break;
+ }
ratio = newRatio;
splitCount += 1.0;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java
index a94449fe01e..212788c940e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java
@@ -66,15 +66,10 @@ public class ProtobufLogWriter extends AbstractProtobufLogWriter implements FSHL
@Override
public void close() throws IOException {
if (this.output != null) {
- try {
- if (!trailerWritten) {
- writeWALTrailer();
- }
- this.output.close();
- } catch (NullPointerException npe) {
- // Can get a NPE coming up from down in DFSClient$DFSOutputStream#close
- LOG.warn(npe.toString(), npe);
+ if (!trailerWritten) {
+ writeWALTrailer();
}
+ this.output.close();
this.output = null;
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
index 1d9f868e52f..42509eaebff 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
@@ -321,6 +321,8 @@ class WALEntryStream implements Closeable {
}
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DCN_NULLPOINTER_EXCEPTION",
+ justification = "HDFS-4380")
private void openReader(Path path) throws IOException {
try {
// Detect if this is a new file, if so get a new reader else
@@ -371,6 +373,8 @@ class WALEntryStream implements Closeable {
}
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DCN_NULLPOINTER_EXCEPTION",
+ justification = "HDFS-4380")
private void resetReader() throws IOException {
try {
currentEntry = null;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/FsDelegationToken.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/FsDelegationToken.java
index 1eb88a3d12f..51961a92370 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/FsDelegationToken.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/FsDelegationToken.java
@@ -98,12 +98,7 @@ public class FsDelegationToken {
userToken = userProvider.getCurrent().getToken(tokenKind, fs.getCanonicalServiceName());
if (userToken == null) {
hasForwardedToken = false;
- try {
- userToken = fs.getDelegationToken(renewer);
- } catch (NullPointerException npe) {
- // we need to handle NullPointerException in case HADOOP-10009 is missing
- LOG.error("Failed to get token for " + renewer);
- }
+ userToken = fs.getDelegationToken(renewer);
} else {
hasForwardedToken = true;
LOG.info("Use the existing token: " + userToken);
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
index 22168c5513f..4b1d2f4d84f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
@@ -75,9 +75,11 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
}
/**
- * Creates the singleton instance, if not yet present, and returns the same. nn * @return
- * Singleton instance of VisibilityLabelsCache n
+ * Creates the singleton instance, if not yet present, and returns the same.
+ * @return Singleton instance of VisibilityLabelsCache
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public synchronized static VisibilityLabelsCache createAndGet(ZKWatcher watcher,
Configuration conf) throws IOException {
// VisibilityLabelService#init() for different regions (in same RS) passes same instance of
@@ -96,6 +98,8 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
* @return Singleton instance of VisibilityLabelsCache n * when this is called before calling
* {@link #createAndGet(ZKWatcher, Configuration)}
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "MS_EXPOSE_REP",
+ justification = "singleton pattern")
public static VisibilityLabelsCache get() {
// By the time this method is called, the singleton instance of VisibilityLabelsCache should
// have been created.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomFilterUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomFilterUtil.java
index b35e8258ddf..7b8a5cd241a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomFilterUtil.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomFilterUtil.java
@@ -76,6 +76,8 @@ public final class BloomFilterUtil {
* This gets used in {@link #contains(ByteBuff, int, int, Hash, int, HashKey)}
* @param random The random number source to use, or null to compute actual hashes
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "EI_EXPOSE_STATIC_REP2",
+ justification = "ignore for now, improve TestCompoundBloomFilter later")
public static void setRandomGeneratorForTest(Random random) {
randomGeneratorForTest = random;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index 41505b92c6a..75572b4c53e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -983,12 +983,9 @@ public class HBaseFsck extends Configured implements Closeable {
start = CellUtil.cloneRow(startKv.get());
Optional<Cell> endKv = hf.getLastKey();
end = CellUtil.cloneRow(endKv.get());
- } catch (IOException ioe) {
+ } catch (Exception ioe) {
LOG.warn("Problem reading orphan file " + hfile + ", skipping");
continue;
- } catch (NullPointerException ioe) {
- LOG.warn("Orphan file " + hfile + " is possibly corrupted HFile, skipping");
- continue;
} finally {
if (hf != null) {
hf.close();
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java
index be9fb23fa3c..32700950460 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java
@@ -504,8 +504,9 @@ public abstract class AbstractFSWALProvider<T extends AbstractFSWAL<?>> implemen
* @param conf configuration
* @return WAL Reader instance
*/
- public static org.apache.hadoop.hbase.wal.WAL.Reader openReader(Path path, Configuration conf)
- throws IOException {
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DCN_NULLPOINTER_EXCEPTION",
+ justification = "HDFS-4380")
+ public static WAL.Reader openReader(Path path, Configuration conf) throws IOException {
long retryInterval = 2000; // 2 sec
int maxAttempts = 30;
int attempt = 0;
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/SingleProcessHBaseCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/SingleProcessHBaseCluster.java
index 5e72464ecb5..92db27fdbe3 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/SingleProcessHBaseCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/SingleProcessHBaseCluster.java
@@ -210,8 +210,6 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
try {
LOG.info("Hook closing fs=" + this.fs);
this.fs.close();
- } catch (NullPointerException npe) {
- LOG.debug("Need to fix these: " + npe.toString());
} catch (IOException e) {
LOG.warn("Running hook", e);
}
diff --git a/hbase-testing-util/src/main/java/org/apache/hadoop/hbase/MiniHBaseCluster.java b/hbase-testing-util/src/main/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
index 8e66c94e33b..4a98bb31e16 100644
--- a/hbase-testing-util/src/main/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
+++ b/hbase-testing-util/src/main/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
@@ -216,8 +216,6 @@ public class MiniHBaseCluster extends HBaseCluster {
try {
LOG.info("Hook closing fs=" + this.fs);
this.fs.close();
- } catch (NullPointerException npe) {
- LOG.debug("Need to fix these: " + npe.toString());
} catch (IOException e) {
LOG.warn("Running hook", e);
}