Zoltan Chovan has uploaded this change for review. (
http://gerrit.cloudera.org:8080/24520
Change subject: [wip] [java] Tighten field visibility and thread-safety
......................................................................
[wip] [java] Tighten field visibility and thread-safety
Driven by new SpotBugs rules introduced with the SpotBugs 6.x upgrade
in the preceding Gradle 9 commit:
* AT_STALE_THREAD_WRITE_OF_PRIMITIVE / AT_NONATOMIC_64BIT_PRIMITIVE
- Add `volatile` to fields read across threads in KuduTransaction.
- Make KuduRpc.attempt private and gate it behind synchronized
accessors (nextAttempt/getAttempt/resetAttempt). Mark
KuduRpc.sequenceId volatile.
* DMI_RANDOM_USED_ONLY_ONCE
- RemoteTablet: replace shared `new Random()` with
ThreadLocalRandom.current() for the one-off seed selection.
- RemoteTablet: also throw IllegalArgumentException (instead of a
bare RuntimeException) for an unknown replica selection mechanism,
and log the cached tabletId field directly.
* MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR / CT_CONSTRUCTOR_THROW
- Mark internal helper classes final (BackupIO, SubprocessConfiguration)
and tighten field visibility (`val rootPath` -> `private[this] val`).
- Mark KuduTransaction.doStartKeepaliveHeartbeating final.
* THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION
- Drop unused `throws Exception` from public methods on KuduTable
that no longer propagate checked exceptions; narrow
ReplicationTableInitializer signatures from `throws Exception`
to `throws KuduException`.
* RowAction (kudu-backup): convert from Java enum to a Scala sealed
trait + objects so the rest of the backup module's pattern matching
is exhaustive.
Public-API impact is minimal: every class touched is annotated
@InterfaceAudience.Private or, in KuduTable's case, the affected
methods are @LimitedPrivate("Impala"). `throws` narrowing is
source-compatible for catch-Exception callers. The remaining global
exclude in excludeFilter.xml (THROWS_METHOD_THROWS_RUNTIMEEXCEPTION)
covers the bare RuntimeException throws kept as-is for now.
Removes the temporary global suppressions (AA/AT/CT/DMI/MC bug
patterns) that the preceding Gradle 9 commit had to add.
Change-Id: I0b96c85c4a42d03d5b7911a823a147c0b66471f1
---
M java/config/spotbugs/excludeFilter.xml
M java/kudu-backup-common/src/main/scala/org/apache/kudu/backup/BackupIO.scala
D java/kudu-backup/src/main/scala/org/apache/kudu/backup/RowAction.java
A java/kudu-backup/src/main/scala/org/apache/kudu/backup/RowAction.scala
M java/kudu-client/src/main/java/org/apache/kudu/client/ArrayCellView.java
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
M java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
M java/kudu-client/src/main/java/org/apache/kudu/client/ErrorCollector.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduRpc.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduTable.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduTransaction.java
M java/kudu-client/src/main/java/org/apache/kudu/client/Negotiator.java
M java/kudu-client/src/main/java/org/apache/kudu/client/RemoteTablet.java
M java/kudu-client/src/main/java/org/apache/kudu/client/RequestTracker.java
M java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java
M java/kudu-client/src/main/java/org/apache/kudu/client/TableLocationsCache.java
M
java/kudu-client/src/main/java/org/apache/kudu/client/internals/SecurityManagerCompatibility.java
M java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java
M
java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduScannerPrefetching.java
M
java/kudu-hive/src/main/java/org/apache/kudu/hive/metastore/KuduMetastorePlugin.java
M
java/kudu-replication/src/main/java/org/apache/kudu/replication/ReplicationTableInitializer.java
M
java/kudu-replication/src/test/java/org/apache/kudu/replication/ReplicationTestBase.java
M
java/kudu-replication/src/test/java/org/apache/kudu/replication/TestReplication.java
M
java/kudu-replication/src/test/java/org/apache/kudu/replication/TestReplicationTableInitializer.java
M
java/kudu-spark-tools/src/main/scala/org/apache/kudu/spark/tools/DistributedDataGenerator.scala
M java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduContext.scala
M java/kudu-spark/src/test/scala/org/apache/kudu/spark/kudu/SparkSQLTest.scala
M
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java
31 files changed, 200 insertions(+), 205 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/20/24520/1
--
To view, visit http://gerrit.cloudera.org:8080/24520
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0b96c85c4a42d03d5b7911a823a147c0b66471f1
Gerrit-Change-Number: 24520
Gerrit-PatchSet: 1
Gerrit-Owner: Zoltan Chovan <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)