You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ni...@apache.org on 2024/10/23 10:03:41 UTC
(hbase) branch master updated: HBASE-28927 Fix spotbugs issues introduced by refactoring to hbase-diagnostics with HBASE-28432 (#6384)
This is an automated email from the ASF dual-hosted git repository.
nihaljain 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 f4aafaf4d50 HBASE-28927 Fix spotbugs issues introduced by refactoring to hbase-diagnostics with HBASE-28432 (#6384)
f4aafaf4d50 is described below
commit f4aafaf4d5092f761465a9f4d44234dc4919331d
Author: Nihal Jain <ni...@apache.org>
AuthorDate: Wed Oct 23 15:33:34 2024 +0530
HBASE-28927 Fix spotbugs issues introduced by refactoring to hbase-diagnostics with HBASE-28432 (#6384)
Signed-off-by: Istvan Toth <st...@apache.org>
---
.../apache/hadoop/hbase/PerformanceEvaluation.java | 23 +++++++++++++++++++---
.../org/apache/hadoop/hbase/util/LoadTestTool.java | 2 +-
.../hadoop/hbase/util/MultiThreadedAction.java | 16 +++++++--------
.../hadoop/hbase/util/MultiThreadedReader.java | 8 ++++----
.../hbase/util/MultiThreadedReaderWithACL.java | 2 --
.../hadoop/hbase/util/MultiThreadedUpdater.java | 2 +-
.../hbase/util/MultiThreadedUpdaterWithACL.java | 2 --
.../hadoop/hbase/wal/WALPerformanceEvaluation.java | 6 +++---
.../hadoop/hbase/util/LoadTestKVGenerator.java | 1 +
9 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/PerformanceEvaluation.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
index 9f97002f4b4..1b397546aca 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
@@ -249,6 +249,22 @@ public class PerformanceEvaluation extends Configured implements Tool {
public int compareTo(RunResult o) {
return Long.compare(this.duration, o.duration);
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ return this.compareTo((RunResult) obj) == 0;
+ }
+
+ @Override
+ public int hashCode() {
+ return Long.hashCode(duration);
+ }
}
/**
@@ -3144,14 +3160,15 @@ public class PerformanceEvaluation extends Configured implements Tool {
&& (opts.getCmdName().equals(RANDOM_READ) || opts.getCmdName().equals(RANDOM_SEEK_SCAN)))
&& opts.size != DEFAULT_OPTS.size && opts.perClientRunRows != DEFAULT_OPTS.perClientRunRows
) {
- opts.totalRows = (int) opts.size * rowsPerGB;
+ opts.totalRows = (int) (opts.size * rowsPerGB);
} else if (opts.size != DEFAULT_OPTS.size) {
// total size in GB specified
- opts.totalRows = (int) opts.size * rowsPerGB;
+ opts.totalRows = (int) (opts.size * rowsPerGB);
opts.perClientRunRows = opts.totalRows / opts.numClientThreads;
} else {
opts.totalRows = opts.perClientRunRows * opts.numClientThreads;
- opts.size = opts.totalRows / rowsPerGB;
+ // Cast to float to ensure floating-point division
+ opts.size = (float) opts.totalRows / rowsPerGB;
}
return opts;
}
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/LoadTestTool.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/LoadTestTool.java
index 1e0ece6309f..43b2d43118d 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/LoadTestTool.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/LoadTestTool.java
@@ -164,7 +164,7 @@ public class LoadTestTool extends AbstractHBaseTool {
public static final String OPT_NUM_REGIONS_PER_SERVER = "num_regions_per_server";
protected static final String OPT_NUM_REGIONS_PER_SERVER_USAGE =
"Desired number of regions per region server. Defaults to 5.";
- public static int DEFAULT_NUM_REGIONS_PER_SERVER = 5;
+ public static final int DEFAULT_NUM_REGIONS_PER_SERVER = 5;
public static final String OPT_REGION_REPLICATION = "region_replication";
protected static final String OPT_REGION_REPLICATION_USAGE =
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedAction.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedAction.java
index 3914884fec9..6eb27c5be8f 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedAction.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedAction.java
@@ -203,16 +203,16 @@ public abstract class MultiThreadedAction {
long numKeysDelta = numKeys - priorNumKeys;
long totalOpTimeDelta = totalOpTime - priorCumulativeOpTime;
- double averageKeysPerSecond = (time > 0) ? (numKeys * 1000 / time) : 0;
+ double averageKeysPerSecond = (time > 0) ? (numKeys * 1000.0 / time) : 0;
LOG.info(threadsLeft + "Keys=" + numKeys + ", cols="
+ StringUtils.humanReadableInt(numCols.get()) + ", time=" + formatTime(time)
+ ((numKeys > 0 && time > 0)
- ? (" Overall: [" + "keys/s= " + numKeys * 1000 / time + ", latency="
+ ? (" Overall: [" + "keys/s= " + (numKeys * 1000.0 / time) + ", latency="
+ String.format("%.2f", (double) totalOpTime / (double) numKeys) + " ms]")
: "")
+ ((numKeysDelta > 0)
- ? (" Current: [" + "keys/s=" + numKeysDelta * 1000 / REPORTING_INTERVAL_MS
+ ? (" Current: [" + "keys/s=" + (numKeysDelta * 1000.0 / REPORTING_INTERVAL_MS)
+ ", latency="
+ String.format("%.2f", (double) totalOpTimeDelta / (double) numKeysDelta) + " ms]")
: "")
@@ -407,15 +407,15 @@ public abstract class MultiThreadedAction {
verifyCfAndColumnIntegrity
&& !dataGenerator.verify(result.getRow(), cf, columnValues.keySet())
) {
- String colsStr = "";
+ StringBuilder colsStr = new StringBuilder();
for (byte[] col : columnValues.keySet()) {
if (colsStr.length() > 0) {
- colsStr += ", ";
+ colsStr.append(", ");
}
- colsStr += "[" + Bytes.toString(col) + "]";
+ colsStr.append("[").append(Bytes.toString(col)).append("]");
}
- LOG.error("Error checking data for key [" + rowKeyStr + "], bad columns for family ["
- + cfStr + "]: " + colsStr);
+ LOG.error("Error checking data for key [{}], bad columns for family [{}]: {}", rowKeyStr,
+ cfStr, colsStr.toString());
printLocations(result);
return false;
}
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReader.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReader.java
index e8e3bea6674..6f4f47b59a6 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReader.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReader.java
@@ -307,15 +307,15 @@ public class MultiThreadedReader extends MultiThreadedAction {
protected Get createGet(long keyToRead) throws IOException {
Get get = new Get(dataGenerator.getDeterministicUniqueKey(keyToRead));
- String cfsString = "";
+ StringBuilder cfsString = new StringBuilder();
byte[][] columnFamilies = dataGenerator.getColumnFamilies();
for (byte[] cf : columnFamilies) {
get.addFamily(cf);
if (verbose) {
if (cfsString.length() > 0) {
- cfsString += ", ";
+ cfsString.append(", ");
}
- cfsString += "[" + Bytes.toStringBinary(cf) + "]";
+ cfsString.append("[").append(Bytes.toStringBinary(cf)).append("]");
}
}
get = dataGenerator.beforeGet(keyToRead, get);
@@ -324,7 +324,7 @@ public class MultiThreadedReader extends MultiThreadedAction {
get.setConsistency(Consistency.TIMELINE);
}
if (verbose) {
- LOG.info("[" + readerId + "] " + "Querying key " + keyToRead + ", cfs " + cfsString);
+ LOG.info("[{}] Querying key {}, cfs {}", readerId, keyToRead, cfsString.toString());
}
return get;
}
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java
index 9286b58ce6b..67081e9ad3f 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java
@@ -88,8 +88,6 @@ public class MultiThreadedReaderWithACL extends MultiThreadedReader {
@Override
public void queryKey(final Get get, final boolean verify, final long keyToRead)
throws IOException {
- final String rowKey = Bytes.toString(get.getRow());
-
// read the data
final long start = System.nanoTime();
PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>() {
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdater.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdater.java
index 99ce506c0c9..b85e581da37 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdater.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdater.java
@@ -76,7 +76,7 @@ public class MultiThreadedUpdater extends MultiThreadedWriterBase {
this.isBatchUpdate = isBatchUpdate;
}
- public void linkToWriter(MultiThreadedWriterBase writer) {
+ public synchronized void linkToWriter(MultiThreadedWriterBase writer) {
this.writer = writer;
writer.setTrackWroteKeys(true);
}
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.java
index 1ad93a54cdd..25b73adb3c4 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.java
@@ -75,8 +75,6 @@ public class MultiThreadedUpdaterWithACL extends MultiThreadedUpdater {
}
public class HBaseUpdaterThreadWithACL extends HBaseUpdaterThread {
-
- private Table table;
private MutateAccessAction mutateAction = new MutateAccessAction();
public HBaseUpdaterThreadWithACL(int updaterId) throws IOException {
diff --git a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java
index b296296e9d4..48e972a5f4e 100644
--- a/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java
+++ b/hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java
@@ -168,7 +168,7 @@ public final class WALPerformanceEvaluation extends Configured implements Tool {
loopSpan.end();
}
}
- } catch (Exception e) {
+ } catch (IOException e) {
LOG.error(getClass().getSimpleName() + " Thread failed", e);
} finally {
threadSpan.end();
@@ -241,7 +241,7 @@ public final class WALPerformanceEvaluation extends Configured implements Tool {
System.err.println("UNEXPECTED: " + cmd);
printUsageAndExit();
}
- } catch (Exception e) {
+ } catch (NumberFormatException e) {
printUsageAndExit();
}
}
@@ -411,7 +411,7 @@ public final class WALPerformanceEvaluation extends Configured implements Tool {
}
private void printUsageAndExit() {
- System.err.printf("Usage: hbase %s [options]\n", getClass().getName());
+ System.err.printf("Usage: hbase %s [options]%n", getClass().getName());
System.err.println(" where [options] are:");
System.err.println(" -h|-help Show this help and exit.");
System.err.println(" -threads <N> Number of threads writing on the WAL.");
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/LoadTestKVGenerator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/LoadTestKVGenerator.java
index 2c786a97b00..47dd8dc2c7e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/LoadTestKVGenerator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/LoadTestKVGenerator.java
@@ -98,6 +98,7 @@ public class LoadTestKVGenerator {
* Generates random bytes of the given size for the given row and column qualifier. The random
* seed is fully determined by these parameters.
*/
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DMI_RANDOM_USED_ONLY_ONCE")
private static byte[] getValueForRowColumn(int dataSize, byte[]... seedStrings) {
long seed = dataSize;
for (byte[] str : seedStrings) {