Zoltan Chovan has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/24520 )

Change subject: [java] Tighten field visibility and thread-safety
......................................................................

[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
Reviewed-on: http://gerrit.cloudera.org:8080/24520
Reviewed-by: Marton Greber <[email protected]>
Tested-by: Marton Greber <[email protected]>
---
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-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java
30 files changed, 206 insertions(+), 203 deletions(-)

Approvals:
  Marton Greber: Looks good to me, approved; Verified

--
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: merged
Gerrit-Change-Id: I0b96c85c4a42d03d5b7911a823a147c0b66471f1
Gerrit-Change-Number: 24520
Gerrit-PatchSet: 5
Gerrit-Owner: Zoltan Chovan <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Marton Greber <[email protected]>
Gerrit-Reviewer: Zoltan Chovan <[email protected]>

Reply via email to