You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2021/02/01 15:52:13 UTC

[kudu] 01/02: [java] address warnings from the SonarLint tool

This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git

commit 361f9aac615e9da021926cd5c82947a7f4b46320
Author: Alexey Serbin <al...@apache.org>
AuthorDate: Thu Jan 21 19:45:18 2021 -0800

    [java] address warnings from the SonarLint tool
    
    This patch addresses some warnings (mostly "low-hanging fruits")
    reported by the SonarLint tool.
    
    This patch does not contain any functional modifications.
    
    Change-Id: I306575b370fb69a54fdc24b9d770a99291828ef7
    Reviewed-on: http://gerrit.cloudera.org:8080/16969
    Tested-by: Alexey Serbin <as...@cloudera.com>
    Reviewed-by: Grant Henke <gr...@apache.org>
---
 .../org/apache/kudu/client/AsyncKuduClient.java    |  38 ++---
 .../org/apache/kudu/client/AsyncKuduScanner.java   |  14 +-
 .../org/apache/kudu/client/AsyncKuduSession.java   | 169 +++++++++++----------
 .../org/apache/kudu/client/AuthzTokenCache.java    |   8 +-
 .../kudu/client/ColumnarRowResultIterator.java     |  19 ++-
 .../org/apache/kudu/client/ConnectToCluster.java   |  18 +--
 .../apache/kudu/client/ConnectToMasterRequest.java |   4 +-
 .../org/apache/kudu/client/CreateTableOptions.java |   1 -
 .../main/java/org/apache/kudu/client/IPCUtil.java  |   4 +
 .../java/org/apache/kudu/client/KeyEncoder.java    |   2 +-
 .../java/org/apache/kudu/client/KuduClient.java    |   5 +-
 .../java/org/apache/kudu/client/KuduPredicate.java |   1 -
 .../java/org/apache/kudu/client/KuduSession.java   |   5 +-
 .../java/org/apache/kudu/client/LocatedTablet.java |   4 +-
 .../org/apache/kudu/client/RowResultIterator.java  |   9 +-
 .../kudu/client/RowwiseRowResultIterator.java      |  14 +-
 .../main/java/org/apache/kudu/client/RpcProxy.java |   2 +-
 .../apache/kudu/client/SessionConfiguration.java   |   1 +
 .../java/org/apache/kudu/client/Statistics.java    |   2 +-
 .../main/java/org/apache/kudu/util/AsyncUtil.java  |   4 +
 .../main/java/org/apache/kudu/util/CharUtil.java   |   4 +
 .../java/org/apache/kudu/util/DataGenerator.java   |   5 +-
 .../main/java/org/apache/kudu/util/DateUtil.java   |   4 +
 .../java/org/apache/kudu/util/DecimalUtil.java     |   5 +-
 .../main/java/org/apache/kudu/util/HashUtil.java   |   6 +-
 .../java/org/apache/kudu/util/HybridTimeUtil.java  |   4 +
 .../main/java/org/apache/kudu/util/NetUtil.java    |   4 +
 .../java/org/apache/kudu/util/SchemaGenerator.java |   2 +-
 .../main/java/org/apache/kudu/util/StringUtil.java |   8 +-
 .../java/org/apache/kudu/util/TimestampUtil.java   |   4 +
 30 files changed, 200 insertions(+), 170 deletions(-)

diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java
index 5f2822f..d8ba883 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java
@@ -884,9 +884,9 @@ public class AsyncKuduClient implements AutoCloseable {
                                                                   timer,
                                                                   defaultAdminOperationTimeoutMs);
 
-    return sendRpcToTablet(rpc).addCallback(resp -> {
-      return new KuduTableStatistics(resp.getOnDiskSize(), resp.getLiveRowCount());
-    });
+    return sendRpcToTablet(rpc).addCallback(resp ->
+        new KuduTableStatistics(resp.getOnDiskSize(), resp.getLiveRowCount())
+    );
   }
 
   /**
@@ -972,7 +972,7 @@ public class AsyncKuduClient implements AutoCloseable {
         .addCallback(new MasterLookupCB(masterTable,
                                         /* partitionKey */ null,
                                         /* requestedBatchSize */ 1))
-        .addCallback((Callback<Void, Object>) ignored -> {
+        .addCallback(ignored -> {
           // Just call ourselves again; we're guaranteed to have the
           // authentication credentials.
           assert hasConnectedToMaster;
@@ -1025,7 +1025,7 @@ public class AsyncKuduClient implements AutoCloseable {
         .addCallback(new MasterLookupCB(masterTable,
                                         /* partitionKey */ null,
                                         /* requestedBatchSize */ 1))
-        .addCallback((Callback<Void, Object>) ignored -> {
+        .addCallback(ignored -> {
           // Just call ourselves again; we're guaranteed to have the HMS config.
           assert hasConnectedToMaster;
           doGetHiveMetastoreConfig(fakeRpc);
@@ -1452,7 +1452,7 @@ public class AsyncKuduClient implements AutoCloseable {
       @Nonnull final String method,
       @Nullable final KuduRpc<?> parent,
       long timeoutMs) {
-    KuduRpc<R> rpc = new FakeKuduRpc<R>(method, timer, timeoutMs);
+    KuduRpc<R> rpc = new FakeKuduRpc<>(method, timer, timeoutMs);
     rpc.setParentRpc(parent);
     return rpc;
   }
@@ -1711,6 +1711,14 @@ public class AsyncKuduClient implements AutoCloseable {
     public String toString() {
       return "release master lookup permit";
     }
+
+    /**
+     * Releases a master lookup permit that was acquired.
+     * See {@link AsyncKuduClient#acquireMasterLookupPermit}.
+     */
+    private void releaseMasterLookupPermit() {
+      masterLookups.release();
+    }
   }
 
   long getSleepTimeForRpcMillis(KuduRpc<?> rpc) {
@@ -1850,16 +1858,16 @@ public class AsyncKuduClient implements AutoCloseable {
                 }
               }
 
-              HiveMetastoreConfig hiveMetastoreConfig = null;
+              HiveMetastoreConfig config = null;
               Master.ConnectToMasterResponsePB respPb = resp.getConnectResponse();
               if (respPb.hasHmsConfig()) {
                 Master.HiveMetastoreConfig metastoreConf = respPb.getHmsConfig();
-                hiveMetastoreConfig = new HiveMetastoreConfig(metastoreConf.getHmsUris(),
-                                                              metastoreConf.getHmsSaslEnabled(),
-                                                              metastoreConf.getHmsUuid());
+                config = new HiveMetastoreConfig(metastoreConf.getHmsUris(),
+                                                 metastoreConf.getHmsSaslEnabled(),
+                                                 metastoreConf.getHmsUuid());
               }
               synchronized (AsyncKuduClient.this) {
-                AsyncKuduClient.this.hiveMetastoreConfig = hiveMetastoreConfig;
+                hiveMetastoreConfig = config;
                 location = respPb.getClientLocation();
                 clusterId = respPb.getClusterId();
               }
@@ -2319,14 +2327,6 @@ public class AsyncKuduClient implements AutoCloseable {
   }
 
   /**
-   * Releases a master lookup permit that was acquired.
-   * @see #acquireMasterLookupPermit
-   */
-  private void releaseMasterLookupPermit() {
-    masterLookups.release();
-  }
-
-  /**
    * Makes discovered tablet locations visible in the client's caches.
    * @param table the table which the locations belong to
    * @param requestPartitionKey the partition key of the table locations request
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
index c736bb5..9206495 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
@@ -580,7 +580,7 @@ public final class AsyncKuduScanner {
           sequenceId++;
           hasMore = resp.more;
           if (LOG.isDebugEnabled()) {
-            LOG.debug("Scanner " + Bytes.pretty(scannerId) + " opened on " + tablet);
+            LOG.debug("Scanner {} opened on {}", Bytes.pretty(scannerId), tablet);
           }
           return Deferred.fromResult(resp.data);
         }
@@ -665,7 +665,6 @@ public final class AsyncKuduScanner {
           }
           sequenceId++;
           hasMore = resp.more;
-          //LOG.info("Scan.next is returning rows: " + resp.data.getNumRows());
           return resp.data;
         }
 
@@ -755,8 +754,7 @@ public final class AsyncKuduScanner {
       public RowResultIterator call(Response response) {
         closed = true;
         if (LOG.isDebugEnabled()) {
-          LOG.debug("Scanner " + Bytes.pretty(scannerId) + " closed on " +
-              tablet);
+          LOG.debug("Scanner {} closed on {}", Bytes.pretty(scannerId), tablet);
         }
         invalidate();
         scannerId = "client debug closed".getBytes(UTF_8);   // Make debugging easier.
@@ -1109,10 +1107,8 @@ public final class AsyncKuduScanner {
             }
           }
 
-          if (isFaultTolerant) {
-            if (AsyncKuduScanner.this.lastPrimaryKey.length > 0) {
-              newBuilder.setLastPrimaryKey(UnsafeByteOperations.unsafeWrap(lastPrimaryKey));
-            }
+          if (isFaultTolerant && AsyncKuduScanner.this.lastPrimaryKey.length > 0) {
+            newBuilder.setLastPrimaryKey(UnsafeByteOperations.unsafeWrap(lastPrimaryKey));
           }
 
           if (AsyncKuduScanner.this.startPrimaryKey.length > 0) {
@@ -1209,7 +1205,7 @@ public final class AsyncKuduScanner {
                                         : AsyncKuduClient.NO_TIMESTAMP,
           resp.getLastPrimaryKey().toByteArray(), resourceMetricsPB);
       if (LOG.isDebugEnabled()) {
-        LOG.debug("{} for scanner {}", response.toString(), AsyncKuduScanner.this);
+        LOG.debug("{} for scanner {}", response, AsyncKuduScanner.this);
       }
       return new Pair<>(response, error);
     }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
index 5d84168..59eb838 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
@@ -332,17 +332,6 @@ public class AsyncKuduSession implements SessionConfiguration {
   }
 
   /**
-   * Returns a buffer to the inactive queue after flushing.
-   * @param buffer the buffer to return to the inactive queue.
-   */
-  private void queueBuffer(Buffer buffer) {
-    inactiveBuffers.add(buffer);
-    buffer.callbackFlushNotification();
-    Deferred<Void> localFlushNotification = flushNotification.getAndSet(new Deferred<>());
-    localFlushNotification.callback(null);
-  }
-
-  /**
    * Callback which waits for all tablet location lookups to complete, groups all operations into
    * batches by tablet, and dispatches them. When all of the batches are complete, a deferred is
    * fired and the buffer is added to the inactive queue.
@@ -440,6 +429,90 @@ public class AsyncKuduSession implements SessionConfiguration {
 
       return null;
     }
+
+    /**
+     * Creates callbacks to handle a multi-put and adds them to the request.
+     * @param request the request for which we must handle the response
+     */
+    private void addBatchCallbacks(final Batch request) {
+      final class BatchCallback implements Callback<BatchResponse, BatchResponse> {
+        @Override
+        public BatchResponse call(final BatchResponse response) {
+          LOG.trace("Got a Batch response for {} rows", request.operations.size());
+          AsyncKuduSession.this.client.updateLastPropagatedTimestamp(response.getWriteTimestamp());
+
+          // Send individualized responses to all the operations in this batch.
+          for (OperationResponse operationResponse : response.getIndividualResponses()) {
+            if (flushMode == FlushMode.AUTO_FLUSH_BACKGROUND && operationResponse.hasRowError()) {
+              errorCollector.addError(operationResponse.getRowError());
+            }
+
+            // Fire the callback after collecting the errors so that the errors
+            // are visible should the callback interrogate the error collector.
+            operationResponse.getOperation().callback(operationResponse);
+          }
+
+          return response;
+        }
+
+        @Override
+        public String toString() {
+          return "apply batch response";
+        }
+      }
+
+      final class BatchErrCallback implements Callback<Object, Exception> {
+        @Override
+        public Object call(Exception e) {
+          // If the exception we receive is a KuduException we're going to build OperationResponses.
+          Status status = null;
+          List<OperationResponse> responses = null;
+          boolean handleKuduException = e instanceof KuduException;
+          if (handleKuduException) {
+            status = ((KuduException) e).getStatus();
+            responses = new ArrayList<>(request.operations.size());
+          }
+
+          for (Operation operation : request.operations) {
+            // Same comment as in BatchCallback regarding the ordering of when to callback.
+            if (handleKuduException) {
+              RowError rowError = new RowError(status, operation);
+              OperationResponse response = new OperationResponse(0, null, 0, operation, rowError);
+              errorCollector.addError(rowError);
+              responses.add(response);
+
+              operation.callback(response);
+            } else {
+              // We have no idea what the exception is so we'll just send it up.
+              operation.errback(e);
+            }
+          }
+
+          // Note that returning an object that's not an exception will make us leave the
+          // errback chain. Effectively, the BatchResponse below will end up as part of the list
+          // passed to ConvertBatchToListOfResponsesCB.
+          return handleKuduException ? new BatchResponse(responses, request.operationIndexes) : e;
+        }
+
+        @Override
+        public String toString() {
+          return "apply batch error response";
+        }
+      }
+
+      request.getDeferred().addCallbacks(new BatchCallback(), new BatchErrCallback());
+    }
+
+    /**
+     * Returns a buffer to the inactive queue after flushing.
+     * @param buffer the buffer to return to the inactive queue.
+     */
+    private void queueBuffer(Buffer buffer) {
+      inactiveBuffers.add(buffer);
+      buffer.callbackFlushNotification();
+      Deferred<Void> localFlushNotification = flushNotification.getAndSet(new Deferred<>());
+      localFlushNotification.callback(null);
+    }
   }
 
   /**
@@ -531,7 +604,7 @@ public class AsyncKuduSession implements SessionConfiguration {
   public boolean hasPendingOperations() {
     synchronized (monitor) {
       return activeBuffer == null ? inactiveBuffers.size() < 2 :
-             activeBuffer.getOperations().size() > 0 || !inactiveBufferAvailable();
+             !activeBuffer.getOperations().isEmpty() || !inactiveBufferAvailable();
     }
   }
 
@@ -718,78 +791,6 @@ public class AsyncKuduSession implements SessionConfiguration {
     }
   }
 
-  /**
-   * Creates callbacks to handle a multi-put and adds them to the request.
-   * @param request the request for which we must handle the response
-   */
-  private void addBatchCallbacks(final Batch request) {
-    final class BatchCallback implements Callback<BatchResponse, BatchResponse> {
-      @Override
-      public BatchResponse call(final BatchResponse response) {
-        LOG.trace("Got a Batch response for {} rows", request.operations.size());
-        AsyncKuduSession.this.client.updateLastPropagatedTimestamp(response.getWriteTimestamp());
-
-        // Send individualized responses to all the operations in this batch.
-        for (OperationResponse operationResponse : response.getIndividualResponses()) {
-          if (flushMode == FlushMode.AUTO_FLUSH_BACKGROUND && operationResponse.hasRowError()) {
-            errorCollector.addError(operationResponse.getRowError());
-          }
-
-          // Fire the callback after collecting the errors so that the errors are visible should the
-          // callback interrogate the error collector.
-          operationResponse.getOperation().callback(operationResponse);
-        }
-
-        return response;
-      }
-
-      @Override
-      public String toString() {
-        return "apply batch response";
-      }
-    }
-
-    final class BatchErrCallback implements Callback<Object, Exception> {
-      @Override
-      public Object call(Exception e) {
-        // If the exception we receive is a KuduException we're going to build OperationResponses.
-        Status status = null;
-        List<OperationResponse> responses = null;
-        boolean handleKuduException = e instanceof KuduException;
-        if (handleKuduException) {
-          status = ((KuduException) e).getStatus();
-          responses = new ArrayList<>(request.operations.size());
-        }
-
-        for (Operation operation : request.operations) {
-          // Same comment as in BatchCallback regarding the ordering of when to callback.
-          if (handleKuduException) {
-            RowError rowError = new RowError(status, operation);
-            OperationResponse response = new OperationResponse(0, null, 0, operation, rowError);
-            errorCollector.addError(rowError);
-            responses.add(response);
-
-            operation.callback(response);
-          } else {
-            // We have no idea what the exception is so we'll just send it up.
-            operation.errback(e);
-          }
-        }
-
-        // Note that returning an object that's not an exception will make us leave the
-        // errback chain. Effectively, the BatchResponse below will end up as part of the list
-        // passed to ConvertBatchToListOfResponsesCB.
-        return handleKuduException ? new BatchResponse(responses, request.operationIndexes) : e;
-      }
-
-      @Override
-      public String toString() {
-        return "apply batch error response";
-      }
-    }
-
-    request.getDeferred().addCallbacks(new BatchCallback(), new BatchErrCallback());
-  }
 
   /**
    * Analogous to BatchErrCallback above but for AUTO_FLUSH_SYNC which doesn't handle lists of
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AuthzTokenCache.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AuthzTokenCache.java
index c774edf..c83b1e5 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AuthzTokenCache.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AuthzTokenCache.java
@@ -132,7 +132,7 @@ public class AuthzTokenCache {
       pendingRetries = retriesForTable.remove(tableId);
     }
     Preconditions.checkState(!pendingRetries.isEmpty(),
-        "no pending retries for table " + tableId);
+        "no pending retries for table %s", tableId);
     return pendingRetries;
   }
 
@@ -150,7 +150,7 @@ public class AuthzTokenCache {
                                    @Nonnull Callback<Void, GetTableSchemaResponse> cb,
                                    @Nonnull Callback<Void, Exception> eb) {
     String tableId = parentRpc.getTable().getTableId();
-    LOG.debug("sending RPC to retrieve token for table ID " + tableId);
+    LOG.debug("sending RPC to retrieve token for table ID {}", tableId);
     GetTableSchemaRequest retrieveAuthzTokenReq = new GetTableSchemaRequest(
         client.getMasterTable(), tableId, /*name=*/null, client.getTimer(),
         client.getDefaultAdminOperationTimeoutMs(), /*requiresAuthzTokenSupport=*/true);
@@ -190,7 +190,7 @@ public class AuthzTokenCache {
           throw new NonRecoverableException(
               Status.InvalidArgument("no authz token retrieved for " + tableId));
         }
-        LOG.debug("retrieved authz token for " + tableId);
+        LOG.debug("retrieved authz token for {}", tableId);
         put(tableId, resp.getAuthzToken());
         for (RpcAndException rpcAndEx : clearPendingRetries(tableId)) {
           client.handleRetryableErrorNoDelay(rpcAndEx.rpc, rpcAndEx.ex);
@@ -237,7 +237,7 @@ public class AuthzTokenCache {
         sendRetrievalForRpc(rpc, newTokenCB, newTokenErrB);
       } else {
         Preconditions.checkState(!pendingRetries.isEmpty(),
-            "no pending retries for table " + tableId);
+            "no pending retries for table %s", tableId);
         pendingRetries.add(rpcAndEx);
       }
     }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/ColumnarRowResultIterator.java b/java/kudu-client/src/main/java/org/apache/kudu/client/ColumnarRowResultIterator.java
index 07e5d9e..78d631d 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/ColumnarRowResultIterator.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/ColumnarRowResultIterator.java
@@ -56,14 +56,14 @@ class ColumnarRowResultIterator extends RowResultIterator {
    * @param reuseRowResult reuse same row result for next row
    */
   ColumnarRowResultIterator(long elapsedMillis,
-                                    String tsUUID,
-                                    Schema schema,
-                                    int numRows,
-                                    Slice[] data,
-                                    Slice[] varlenData,
-                                    Slice[] nonNullBitmaps,
-                                    boolean reuseRowResult) {
-    super(elapsedMillis, tsUUID, schema, numRows, reuseRowResult);
+                            String tsUUID,
+                            Schema schema,
+                            int numRows,
+                            Slice[] data,
+                            Slice[] varlenData,
+                            Slice[] nonNullBitmaps,
+                            boolean reuseRowResult) {
+    super(elapsedMillis, tsUUID, schema, numRows);
     this.data = data;
     this.varlenData = varlenData;
     this.nonNullBitmaps = nonNullBitmaps;
@@ -77,8 +77,7 @@ class ColumnarRowResultIterator extends RowResultIterator {
                                                          Schema schema,
                                                          WireProtocol.ColumnarRowBlockPB data,
                                                          final CallResponse callResponse,
-                                                         boolean reuseRowResult)
-      throws KuduException {
+                                                         boolean reuseRowResult) {
     if (data == null || data.getNumRows() == 0) {
       return new ColumnarRowResultIterator(elapsedMillis, tsUUID, schema, 0,
               null, null, null, reuseRowResult);
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
index f11da51..e25ab11 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
@@ -315,15 +315,6 @@ final class ConnectToCluster {
     }
   }
 
-  private void recordKnownMasters(ConnectToMasterResponsePB r) {
-    // Old versions don't set this field.
-    if (r.getMasterAddrsCount() == 0) {
-      return;
-    }
-
-    knownMasters.compareAndSet(null, r.getMasterAddrsList());
-  }
-
   /**
    * Callback for each ConnectToCluster RPC sent in connectToMaster() above.
    * If a request (paired to a specific master) returns a reply that indicates it's a leader,
@@ -364,6 +355,15 @@ final class ConnectToCluster {
     public String toString() {
       return "ConnectToMasterCB for " + hostAndPort.toString();
     }
+
+    private void recordKnownMasters(ConnectToMasterResponsePB r) {
+      // Old versions don't set this field.
+      if (r.getMasterAddrsCount() == 0) {
+        return;
+      }
+
+      knownMasters.compareAndSet(null, r.getMasterAddrsList());
+    }
   }
 
   /**
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToMasterRequest.java b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToMasterRequest.java
index 8a0c713..18acebf 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToMasterRequest.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToMasterRequest.java
@@ -102,8 +102,8 @@ public class ConnectToMasterRequest extends KuduRpc<ConnectToMasterResponsePB> {
         respBuilder.hasError() ? respBuilder.getError() : null);
   }
 
-  private Pair<ConnectToMasterResponsePB, Object> deserializeOldRpc(CallResponse callResponse)
-      throws KuduException {
+  private Pair<ConnectToMasterResponsePB, Object> deserializeOldRpc(
+      CallResponse callResponse) {
     final GetMasterRegistrationResponsePB.Builder resp =
         GetMasterRegistrationResponsePB.newBuilder();
     readProtobuf(callResponse.getPBMessage(), resp);
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/CreateTableOptions.java b/java/kudu-client/src/main/java/org/apache/kudu/client/CreateTableOptions.java
index 94dff93..8949d2b 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/CreateTableOptions.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/CreateTableOptions.java
@@ -21,7 +21,6 @@ import java.util.List;
 import java.util.Map;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.yetus.audience.InterfaceAudience;
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/IPCUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/client/IPCUtil.java
index 7c02ab4..16ece95 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/IPCUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/IPCUtil.java
@@ -31,6 +31,10 @@ import org.apache.yetus.audience.InterfaceAudience;
  */
 @InterfaceAudience.Private
 public class IPCUtil {
+
+  private IPCUtil() {
+  }
+
   /**
    * Write out header, param, and cell block if there is one.
    * @param dos
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KeyEncoder.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KeyEncoder.java
index 71a71ec..fd3ec69 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KeyEncoder.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KeyEncoder.java
@@ -469,7 +469,7 @@ class KeyEncoder {
       sb.append(hashBuckets);
     }
 
-    if (partitionSchema.getRangeSchema().getColumnIds().size() > 0) {
+    if (!partitionSchema.getRangeSchema().getColumnIds().isEmpty()) {
       if (!hashBuckets.isEmpty()) {
         sb.append(", ");
       }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduClient.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduClient.java
index cf7806d..a77689b 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduClient.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduClient.java
@@ -41,7 +41,7 @@ import org.apache.kudu.master.Master.TableIdentifierPB;
 @InterfaceStability.Evolving
 public class KuduClient implements AutoCloseable {
 
-  private static final Logger LOG = LoggerFactory.getLogger(AsyncKuduClient.class);
+  private static final Logger LOG = LoggerFactory.getLogger(KuduClient.class);
   public static final long NO_TIMESTAMP = -1;
 
   @InterfaceAudience.LimitedPrivate("Test")
@@ -542,7 +542,8 @@ public class KuduClient implements AutoCloseable {
      * @return this builder
      * @deprecated socket read timeouts are no longer used
      */
-    @Deprecated public KuduClientBuilder defaultSocketReadTimeoutMs(long timeoutMs) {
+    @Deprecated
+    public KuduClientBuilder defaultSocketReadTimeoutMs(long timeoutMs) {
       LOG.info("defaultSocketReadTimeoutMs is deprecated");
       return this;
     }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduPredicate.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduPredicate.java
index f8dae24..67c611e 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduPredicate.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduPredicate.java
@@ -24,7 +24,6 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.sql.Date;
 import java.sql.Timestamp;
-import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduSession.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduSession.java
index 0916467..8f0870e 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduSession.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduSession.java
@@ -121,7 +121,7 @@ public class KuduSession implements SessionConfiguration {
   }
 
   @Override
-  public void setFlushMode(AsyncKuduSession.FlushMode flushMode) {
+  public void setFlushMode(FlushMode flushMode) {
     session.setFlushMode(flushMode);
   }
 
@@ -135,6 +135,9 @@ public class KuduSession implements SessionConfiguration {
     session.setErrorCollectorSpace(size);
   }
 
+  /**
+   * @deprecated
+   */
   @Override
   @Deprecated
   public void setMutationBufferLowWatermark(float mutationBufferLowWatermarkPercentage) {
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/LocatedTablet.java b/java/kudu-client/src/main/java/org/apache/kudu/client/LocatedTablet.java
index 63c2a15..8003a15 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/LocatedTablet.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/LocatedTablet.java
@@ -57,7 +57,7 @@ public class LocatedTablet {
   }
 
   /**
-   * DEPRECATED: use {@link #getPartition()}
+   * @deprecated use {@link #getPartition()}
    */
   @Deprecated
   public byte[] getStartKey() {
@@ -65,7 +65,7 @@ public class LocatedTablet {
   }
 
   /**
-   * DEPRECATED: use {@link #getPartition()}
+   * @deprecated use {@link #getPartition()}
    */
   @Deprecated()
   public byte[] getEndKey() {
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/RowResultIterator.java b/java/kudu-client/src/main/java/org/apache/kudu/client/RowResultIterator.java
index d9abc30..8c3cf05 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/RowResultIterator.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/RowResultIterator.java
@@ -45,11 +45,10 @@ public abstract class RowResultIterator extends KuduRpcResponse implements Itera
    * @param schema schema used to parse the rows
    * @param numRows how many rows are contained in the bs slice
    */
-  protected RowResultIterator(long elapsedMillis,
-                            String tsUUID,
-                            Schema schema,
-                            int numRows,
-                            boolean reuseRowResult) {
+  RowResultIterator(long elapsedMillis,
+                    String tsUUID,
+                    Schema schema,
+                    int numRows) {
     super(elapsedMillis, tsUUID);
     this.schema = schema;
     this.numRows = numRows;
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/RowwiseRowResultIterator.java b/java/kudu-client/src/main/java/org/apache/kudu/client/RowwiseRowResultIterator.java
index 9c6c440..d2d9a0b 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/RowwiseRowResultIterator.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/RowwiseRowResultIterator.java
@@ -53,13 +53,13 @@ class RowwiseRowResultIterator extends RowResultIterator {
    * @param reuseRowResult reuse same row result for next row
    */
   RowwiseRowResultIterator(long elapsedMillis,
-                                   String tsUUID,
-                                   Schema schema,
-                                   int numRows,
-                                   Slice bs,
-                                   Slice indirectBs,
-                                   boolean reuseRowResult) {
-    super(elapsedMillis, tsUUID, schema, numRows, reuseRowResult);
+                           String tsUUID,
+                           Schema schema,
+                           int numRows,
+                           Slice bs,
+                           Slice indirectBs,
+                           boolean reuseRowResult) {
+    super(elapsedMillis, tsUUID, schema, numRows);
     this.bs = bs;
     this.indirectBs = indirectBs;
 
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java b/java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java
index ce0fd92..cf564b9 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java
@@ -128,7 +128,7 @@ class RpcProxy {
       // Throw an exception to enable testing failures. See `failNextRpcs`.
       if (staticNumFail > 0) {
         staticNumFail--;
-        LOG.warn("Forcing a failure on sendRpc: " + rpc);
+        LOG.warn("Forcing a failure on sendRpc: {}", rpc);
         throw staticException;
       }
       if (!rpc.getRequiredFeatures().isEmpty()) {
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/SessionConfiguration.java b/java/kudu-client/src/main/java/org/apache/kudu/client/SessionConfiguration.java
index c2071b6..d3e942d 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/SessionConfiguration.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/SessionConfiguration.java
@@ -104,6 +104,7 @@ public interface SessionConfiguration {
    * 0 and 1
    * @deprecated The low watermark no longer has any effect.
    */
+  @Deprecated
   void setMutationBufferLowWatermark(float mutationBufferLowWatermarkPercentage);
 
   /**
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/Statistics.java b/java/kudu-client/src/main/java/org/apache/kudu/client/Statistics.java
index ca87151..c4b0c0f 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/Statistics.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/Statistics.java
@@ -152,7 +152,7 @@ public class Statistics {
     // which is only a Map method in Java 8.
     //
     // See KUDU-2188 for details.
-    for (String tablet : ((Map<String, Statistics.TabletStatistics>) stsMap).keySet()) {
+    for (String tablet : stsMap.keySet()) {
       tablets.add(tablet);
     }
     return tablets;
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/AsyncUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/AsyncUtil.java
index 57d2c23..3bfacff 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/AsyncUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/AsyncUtil.java
@@ -29,6 +29,10 @@ import org.apache.yetus.audience.InterfaceAudience;
 @InterfaceAudience.Private
 public class AsyncUtil {
 
+  /** Non-constructable utility class. */
+  private AsyncUtil() {
+  }
+
   /**
    * Register a callback and an "errback".
    * <p>
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/CharUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/CharUtil.java
index 98ed31a..e08879b 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/CharUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/CharUtil.java
@@ -26,6 +26,10 @@ public class CharUtil {
   public static final int MIN_VARCHAR_LENGTH = 1;
   public static final int MAX_VARCHAR_LENGTH = 65535;
 
+  /** Non-constructable utility class. */
+  private CharUtil() {
+  }
+
   /**
    * Convenience method to create column type attributes for VARCHAR columns.
    * @param length the length.
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/DataGenerator.java b/java/kudu-client/src/main/java/org/apache/kudu/util/DataGenerator.java
index 07a11a2..b20010c 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/DataGenerator.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/DataGenerator.java
@@ -249,7 +249,4 @@ public class DataGenerator {
       );
     }
   }
-}
-
-
-
+}
\ No newline at end of file
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/DateUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/DateUtil.java
index af1c7d6..f71da3e 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/DateUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/DateUtil.java
@@ -29,6 +29,10 @@ public class DateUtil {
   public static final int MAX_DATE_VALUE =
       (int)LocalDate.parse("9999-12-31").toEpochDay(); // 2932896
 
+  /** Non-constructable utility class. */
+  private DateUtil() {
+  }
+
   /**
    * Check whether the date is within the range '0001-01-01':'9999-12-31'
    *
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/DecimalUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/DecimalUtil.java
index 83ec926..a3a9871 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/DecimalUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/DecimalUtil.java
@@ -49,6 +49,10 @@ public class DecimalUtil {
   public static final int MIN_DECIMAL_PRECISION = 1;
   public static final int MAX_DECIMAL_PRECISION = MAX_DECIMAL128_PRECISION;
 
+  /** Non-constructable utility class. */
+  private DecimalUtil() {
+  }
+
   /**
    * Given a precision, returns the size of the Decimal in Bytes.
    * @return the size in Bytes.
@@ -151,5 +155,4 @@ public class DecimalUtil {
         .scale(scale)
         .build();
   }
-
 }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/HashUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/HashUtil.java
index 9d27d4d..c2bfa20 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/HashUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/HashUtil.java
@@ -38,6 +38,10 @@ public class HashUtil {
     HASH_VAL_NULL_BYTE_BUF[3] = (byte) (HASH_VAL_NULL >>> 24);
   }
 
+  /** Non-constructable utility class. */
+  private HashUtil() {
+  }
+
   /**
    * Compute 64-bit FastHash of the supplied data backed by byte array.
    *
@@ -131,4 +135,4 @@ public class HashUtil {
     h ^= h >>> 47;
     return h;
   }
-}
+}
\ No newline at end of file
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/HybridTimeUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/HybridTimeUtil.java
index 4584ec7..0672a62 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/HybridTimeUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/HybridTimeUtil.java
@@ -30,6 +30,10 @@ public class HybridTimeUtil {
   public static final int hybridTimeNumBitsToShift = 12;
   public static final int hybridTimeLogicalBitsMask = (1 << hybridTimeNumBitsToShift) - 1;
 
+  /** Non-constructable utility class. */
+  private HybridTimeUtil() {
+  }
+
   /**
    * Converts the provided timestamp, in the provided unit, to the HybridTime timestamp
    * format. Logical bits are set to 0.
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/NetUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/NetUtil.java
index 2da927a..26b1045 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/NetUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/NetUtil.java
@@ -42,6 +42,10 @@ public class NetUtil {
 
   private static final Logger LOG = LoggerFactory.getLogger(NetUtil.class);
 
+  /** Non-constructable utility class. */
+  private NetUtil() {
+  }
+
   /**
    * Convert a list of {@link HostAndPort} objects to a comma separate string.
    * The inverse of {@link #parseStrings(String, int)}.
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/SchemaGenerator.java b/java/kudu-client/src/main/java/org/apache/kudu/util/SchemaGenerator.java
index ee248a0..6613b84 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/SchemaGenerator.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/SchemaGenerator.java
@@ -242,7 +242,7 @@ public class SchemaGenerator {
       default: throw new IllegalArgumentException("Unsupported type " + type);
     }
 
-    if (validEncodings.size() == 0) {
+    if (validEncodings.isEmpty()) {
       throw new IllegalArgumentException("There are no valid encodings for type " + type);
     }
 
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/StringUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/StringUtil.java
index 88bd436..fe2855d 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/StringUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/StringUtil.java
@@ -22,6 +22,10 @@ import org.apache.yetus.audience.InterfaceAudience;
 @InterfaceAudience.Private
 public class StringUtil {
 
+  /** Non-constructable utility class. */
+  private StringUtil() {
+  }
+
   /**
    * Escapes the provided string and appends it to the string builder. The
    * escaping is done according to the Hive/Impala escaping rules. Adapted from
@@ -84,8 +88,4 @@ public class StringUtil {
       }
     }
   }
-
-  /** Non-constructable utility class. */
-  private StringUtil() {
-  }
 }
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/TimestampUtil.java b/java/kudu-client/src/main/java/org/apache/kudu/util/TimestampUtil.java
index a6dde24..71d4053 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/TimestampUtil.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/TimestampUtil.java
@@ -28,6 +28,10 @@ import org.apache.yetus.audience.InterfaceAudience;
 @InterfaceAudience.Private
 public class TimestampUtil {
 
+  /** Non-constructable utility class. */
+  private TimestampUtil() {
+  }
+
   // Thread local DateFormat since they're not thread-safe.
   private static final ThreadLocal<DateFormat> DATE_FORMAT = new ThreadLocal<DateFormat>() {
     @Override