You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by to...@apache.org on 2016/08/24 19:18:45 UTC

kudu git commit: KUDU-1157. Don't use array reference equality for EMPTY_ARRAY

Repository: kudu
Updated Branches:
  refs/heads/master df3d070e5 -> d911b304d


KUDU-1157. Don't use array reference equality for EMPTY_ARRAY

It seems like the only way that the user can specify these byte[] bounds
is some deprecated 'raw bounds' APIs. So, this isn't likely a fix for
any real bugs. However, it's quite bad form to compare reference
equality on arrays.

Change-Id: I30163098926822aafbf23b03ba4c9e26a7c91349
Reviewed-on: http://gerrit.cloudera.org:8080/4101
Tested-by: Kudu Jenkins
Reviewed-by: Dan Burkert <da...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/d911b304
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/d911b304
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/d911b304

Branch: refs/heads/master
Commit: d911b304d7f4e2c345a01d4e6a7637cf71835a4a
Parents: df3d070
Author: Todd Lipcon <to...@apache.org>
Authored: Tue Aug 23 15:53:51 2016 -0700
Committer: Todd Lipcon <to...@apache.org>
Committed: Wed Aug 24 19:17:04 2016 +0000

----------------------------------------------------------------------
 .../kudu/client/AbstractKuduScannerBuilder.java       |  4 ++--
 .../java/org/apache/kudu/client/AsyncKuduScanner.java | 14 ++++++--------
 .../java/org/apache/kudu/client/KuduScanToken.java    | 14 ++++++--------
 3 files changed, 14 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
index 47a391a..9b648c3 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
@@ -274,7 +274,7 @@ public abstract class AbstractKuduScannerBuilder
    */
   @Deprecated
   public S lowerBoundRaw(byte[] startPrimaryKey) {
-    if (lowerBoundPrimaryKey == AsyncKuduClient.EMPTY_ARRAY ||
+    if (lowerBoundPrimaryKey.length == 0 ||
         Bytes.memcmp(startPrimaryKey, lowerBoundPrimaryKey) > 0) {
       this.lowerBoundPrimaryKey = startPrimaryKey;
     }
@@ -299,7 +299,7 @@ public abstract class AbstractKuduScannerBuilder
    */
   @Deprecated
   public S exclusiveUpperBoundRaw(byte[] endPrimaryKey) {
-    if (upperBoundPrimaryKey == AsyncKuduClient.EMPTY_ARRAY ||
+    if (upperBoundPrimaryKey.length == 0 ||
         Bytes.memcmp(endPrimaryKey, upperBoundPrimaryKey) < 0) {
       this.upperBoundPrimaryKey = endPrimaryKey;
     }

http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
----------------------------------------------------------------------
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 b80e765..20cf9f2 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
@@ -268,8 +268,8 @@ public final class AsyncKuduScanner {
     this.batchSizeBytes = batchSizeBytes;
 
     if (!table.getPartitionSchema().isSimpleRangePartitioning() &&
-        (startPrimaryKey != AsyncKuduClient.EMPTY_ARRAY ||
-         endPrimaryKey != AsyncKuduClient.EMPTY_ARRAY) &&
+        (startPrimaryKey.length != 0 ||
+         endPrimaryKey.length != 0) &&
         PARTITION_PRUNE_WARN.getAndSet(false)) {
       LOG.warn("Starting full table scan. " +
                "In the future this scan may be automatically optimized with partition pruning.");
@@ -458,7 +458,7 @@ public final class AsyncKuduScanner {
 
             // Stop scanning if the non-covered range is past the end partition key.
             if (ncre.getNonCoveredRangeEnd().length == 0
-                || (endPartitionKey != AsyncKuduClient.EMPTY_ARRAY
+                || (endPartitionKey.length != 0
                 && Bytes.memcmp(endPartitionKey, ncre.getNonCoveredRangeEnd()) <= 0)) {
               hasMore = false;
               closed = true; // the scanner is closed on the other side at this point
@@ -550,7 +550,7 @@ public final class AsyncKuduScanner {
     Partition partition = tablet.getPartition();
     // Stop scanning if we have scanned until or past the end partition key.
     if (partition.isEndPartition()
-        || (this.endPartitionKey != AsyncKuduClient.EMPTY_ARRAY
+        || (this.endPartitionKey.length != 0
             && Bytes.memcmp(this.endPartitionKey, partition.getPartitionKeyEnd()) <= 0)) {
       hasMore = false;
       closed = true; // the scanner is closed on the other side at this point
@@ -778,13 +778,11 @@ public final class AsyncKuduScanner {
             newBuilder.setSnapTimestamp(AsyncKuduScanner.this.getSnapshotTimestamp());
           }
 
-          if (AsyncKuduScanner.this.startPrimaryKey != AsyncKuduClient.EMPTY_ARRAY &&
-              AsyncKuduScanner.this.startPrimaryKey.length > 0) {
+          if (AsyncKuduScanner.this.startPrimaryKey.length > 0) {
             newBuilder.setStartPrimaryKey(ZeroCopyLiteralByteString.copyFrom(startPrimaryKey));
           }
 
-          if (AsyncKuduScanner.this.endPrimaryKey != AsyncKuduClient.EMPTY_ARRAY &&
-              AsyncKuduScanner.this.endPrimaryKey.length > 0) {
+          if (AsyncKuduScanner.this.endPrimaryKey.length > 0) {
             newBuilder.setStopPrimaryKey(ZeroCopyLiteralByteString.copyFrom(endPrimaryKey));
           }
 

http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
index cfecb67..6b121b2 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
@@ -213,8 +213,8 @@ public class KuduScanToken implements Comparable<KuduScanToken> {
 
     @Override
     public List<KuduScanToken> build() {
-      if (lowerBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY ||
-          upperBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY) {
+      if (lowerBoundPartitionKey.length != 0 ||
+          upperBoundPartitionKey.length != 0) {
         throw new IllegalArgumentException(
             "Partition key bounds may not be set on KuduScanTokenBuilder");
       }
@@ -254,18 +254,16 @@ public class KuduScanToken implements Comparable<KuduScanToken> {
         proto.addColumnPredicates(predicate.toPB());
       }
 
-      if (lowerBoundPrimaryKey != AsyncKuduClient.EMPTY_ARRAY && lowerBoundPrimaryKey.length > 0) {
+      if (lowerBoundPrimaryKey.length > 0) {
         proto.setLowerBoundPrimaryKey(ZeroCopyLiteralByteString.copyFrom(lowerBoundPrimaryKey));
       }
-      if (upperBoundPrimaryKey != AsyncKuduClient.EMPTY_ARRAY && upperBoundPrimaryKey.length > 0) {
+      if (upperBoundPrimaryKey.length > 0) {
         proto.setUpperBoundPrimaryKey(ZeroCopyLiteralByteString.copyFrom(upperBoundPrimaryKey));
       }
-      if (lowerBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY &&
-          lowerBoundPartitionKey.length > 0) {
+      if (lowerBoundPartitionKey.length > 0) {
         proto.setLowerBoundPartitionKey(ZeroCopyLiteralByteString.copyFrom(lowerBoundPartitionKey));
       }
-      if (upperBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY &&
-          upperBoundPartitionKey.length > 0) {
+      if (upperBoundPartitionKey.length > 0) {
         proto.setUpperBoundPartitionKey(ZeroCopyLiteralByteString.copyFrom(upperBoundPartitionKey));
       }