Index: hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java =================================================================== --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java (revision 1514154) +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java (working copy) @@ -66,7 +66,7 @@ private final int retries; public RpcRetryingCaller(Configuration conf) { - this.pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE, + this.pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE, HConstants.DEFAULT_HBASE_CLIENT_PAUSE); this.retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, @@ -147,7 +147,7 @@ afterCall(); } try { - Thread.sleep(expectedSleep); + Thread.wait(expectedSleep); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new InterruptedIOException("Interrupted after " + tries + " tries on " + retries); @@ -224,4 +224,4 @@ } return t; } -} \ No newline at end of file +} Index: hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java =================================================================== --- hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java (revision 1514154) +++ hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java (working copy) @@ -466,6 +466,8 @@ * It is up to the user code to check this status. * @param call to add */ + @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY", + justification="Notify because new call available for processing") protected synchronized void addCall(Call call) { // If the connection is about to close, we manage this as if the call was already added // to the connection calls list. If not, the connection creations are serialized, as @@ -1149,6 +1151,8 @@ cleanupCalls(0); } + @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY", + justification="Notify because timedout") protected void cleanupCalls(long rpcTimeout) { Iterator> itor = calls.entrySet().iterator(); while (itor.hasNext()) { @@ -1184,9 +1188,7 @@ } if (!shouldCloseConnection.get()) { closeException = null; - if (socket != null) { - socket.setSoTimeout((int) rpcTimeout); - } + setSocketTimeout((int) rpcTimeout); } } catch (SocketException e) { LOG.debug("Couldn't lower timeout, which may result in longer than expected calls"); @@ -1194,6 +1196,13 @@ } } + @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="IS2_INCONSISTENT_SYNC", + justification="Presume sync not needed setting socket timeout") + private void setSocketTimeout(final int rpcTimeout) { + if (this.socket == null) return; + this.socket.setSoTimeout(rpcTimeout); + } + /** * Client-side call timeout */ @@ -1649,4 +1658,4 @@ this.isa, this.rpcTimeout); } } -} \ No newline at end of file +} Index: hbase-client/src/main/java/org/apache/hadoop/hbase/security/access/TablePermission.java =================================================================== --- hbase-client/src/main/java/org/apache/hadoop/hbase/security/access/TablePermission.java (revision 1514154) +++ hbase-client/src/main/java/org/apache/hadoop/hbase/security/access/TablePermission.java (working copy) @@ -310,6 +310,8 @@ } @Override + @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NP_NULL_ON_SOME_PATH", + justification="Passed on construction except on constructor not to be used") public boolean equals(Object obj) { if (!(obj instanceof TablePermission)) { return false;