You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by gr...@apache.org on 2018/04/27 03:54:56 UTC
[08/12] kudu git commit: java: fix various integer-math error-prone
issues
java: fix various integer-math error-prone issues
- Adds extra () around various bitwise math to clarify operator
precedence (non-functional)
- Adds an upcast to 'long' to avoid potential overflow calculating the
size of a write request. This shouldn't overflow in practice given
other limits on write batch sizes.
- Removed some unused methods in Slices.java
This should be non-functional.
Change-Id: I515f64ab2a594588d952f6bd7f43451150c7ca9a
Reviewed-on: http://gerrit.cloudera.org:8080/10200
Reviewed-by: Grant Henke <gr...@apache.org>
Tested-by: Kudu Jenkins
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/ed2758d9
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/ed2758d9
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/ed2758d9
Branch: refs/heads/master
Commit: ed2758d977502d54f84e3704f0dac56cb4171d46
Parents: 8d7e305
Author: Todd Lipcon <to...@apache.org>
Authored: Wed Apr 25 11:51:49 2018 -0700
Committer: Todd Lipcon <to...@apache.org>
Committed: Thu Apr 26 22:20:38 2018 +0000
----------------------------------------------------------------------
.../main/java/org/apache/kudu/client/Batch.java | 4 ++--
.../main/java/org/apache/kudu/client/Bytes.java | 6 ++---
.../java/org/apache/kudu/client/Operation.java | 4 ++--
.../main/java/org/apache/kudu/util/Slice.java | 2 +-
.../main/java/org/apache/kudu/util/Slices.java | 23 --------------------
.../org/apache/kudu/client/TestKuduClient.java | 2 +-
6 files changed, 9 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java b/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
index def5409..d2034e2 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
@@ -91,8 +91,8 @@ class Batch extends KuduRpc<BatchResponse> {
Message createRequestPB() {
final Tserver.WriteRequestPB.Builder builder =
Operation.createAndFillWriteRequestPB(operations);
- rowOperationsSizeBytes = builder.getRowOperations().getRows().size() +
- builder.getRowOperations().getIndirectData().size();
+ rowOperationsSizeBytes = (long)builder.getRowOperations().getRows().size() +
+ (long)builder.getRowOperations().getIndirectData().size();
builder.setTabletId(UnsafeByteOperations.unsafeWrap(getTablet().getTabletIdAsBytes()));
builder.setExternalConsistencyMode(externalConsistencyMode.pbVersion());
return builder.build();
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java b/java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java
index 0f31d6d..939d6ac 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java
@@ -182,7 +182,7 @@ public final class Bytes {
* @throws IndexOutOfBoundsException if the byte array is too small.
*/
public static short getShort(final byte[] b, final int offset) {
- return (short) (b[offset] & 0xFF | b[offset + 1] << 8 );
+ return (short) ((b[offset] & 0xFF) | (b[offset + 1] << 8));
}
/**
@@ -1188,7 +1188,7 @@ public final class Bytes {
byte[] bytes = new byte[getBitSetSize(colCount)];
for (int i = 0; i < bits.length(); i++) {
if (bits.get(i)) {
- bytes[i / 8] |= 1 << (i % 8);
+ bytes[i / 8] |= (byte)(1 << (i % 8));
}
}
return bytes;
@@ -1211,7 +1211,7 @@ public final class Bytes {
* @return same byte with xor applied on the left most bit
*/
public static byte xorLeftMostBit(byte value) {
- value ^= (1 << 7);
+ value ^= (byte)(1 << 7);
return value;
}
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java b/java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java
index 797b197..3a9a294 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java
@@ -130,8 +130,8 @@ public abstract class Operation extends KuduRpc<OperationResponse> {
Message createRequestPB() {
final Tserver.WriteRequestPB.Builder builder =
createAndFillWriteRequestPB(ImmutableList.of(this));
- this.rowOperationSizeBytes = builder.getRowOperations().getRows().size() +
- builder.getRowOperations().getIndirectData().size();
+ this.rowOperationSizeBytes = (long)builder.getRowOperations().getRows().size() +
+ (long)builder.getRowOperations().getIndirectData().size();
builder.setTabletId(UnsafeByteOperations.unsafeWrap(getTablet().getTabletIdAsBytes()));
builder.setExternalConsistencyMode(this.externalConsistencyMode.pbVersion());
if (this.propagatedTimestamp != AsyncKuduClient.NO_TIMESTAMP) {
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/main/java/org/apache/kudu/util/Slice.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/Slice.java b/java/kudu-client/src/main/java/org/apache/kudu/util/Slice.java
index 0bc0e03..6fc8375 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/Slice.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/Slice.java
@@ -123,7 +123,7 @@ public final class Slice implements Comparable<Slice> {
public short getShort(int index) {
Preconditions.checkPositionIndexes(index, index + Shorts.BYTES, this.length);
index += offset;
- return (short) (data[index] & 0xFF | data[index + 1] << 8);
+ return (short) ((data[index] & 0xFF) | (data[index + 1] << 8));
}
/**
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/main/java/org/apache/kudu/util/Slices.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/util/Slices.java b/java/kudu-client/src/main/java/org/apache/kudu/util/Slices.java
index 022a76d..3434c7a 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/util/Slices.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/util/Slices.java
@@ -145,29 +145,6 @@ public final class Slices {
return dst.flip().toString();
}
- /**
- * Toggles the endianness of the specified 16-bit short integer.
- */
- public static short swapShort(short value) {
- return (short) (value << 8 | value >>> 8 & 0xff);
- }
-
- /**
- * Toggles the endianness of the specified 32-bit integer.
- */
- public static int swapInt(int value) {
- return swapShort((short) value) << 16 |
- swapShort((short) (value >>> 16)) & 0xffff;
- }
-
- /**
- * Toggles the endianness of the specified 64-bit long integer.
- */
- public static long swapLong(long value) {
- return (long) swapInt((int) value) << 32 |
- swapInt((int) (value >>> 32)) & 0xffffffffL;
- }
-
private static final ThreadLocal<Map<Charset, CharsetEncoder>> encoders =
new ThreadLocal<Map<Charset, CharsetEncoder>>() {
@Override
http://git-wip-us.apache.org/repos/asf/kudu/blob/ed2758d9/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduClient.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduClient.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduClient.java
index 0d61e58..3944992 100644
--- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduClient.java
+++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduClient.java
@@ -1199,7 +1199,7 @@ public class TestKuduClient extends BaseKuduTest {
client.getLastPropagatedTimestamp());
long row_count = countRowsInScan(syncScanner);
- long expected_count = 100 * (i + 1);
+ long expected_count = 100L * (i + 1);
assertTrue(expected_count <= row_count);
// After the scan, verify that the chosen snapshot timestamp is