This is an automated email from the ASF dual-hosted git repository.
apolovtsev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 29bd72ab542 IGNITE-26287 Upgrade Spotbugs to 4.9.4 (#6477)
29bd72ab542 is described below
commit 29bd72ab542037ad8967c4cb5e64c79e55d79391
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Mon Aug 25 15:41:36 2025 +0300
IGNITE-26287 Upgrade Spotbugs to 4.9.4 (#6477)
---
check-rules/spotbugs-excludes.xml | 13 ++++++++++++-
gradle/libs.versions.toml | 2 +-
.../java/org/apache/ignite/raft/jraft/core/ItNodeTest.java | 1 +
.../internal/rocksdb/snapshot/RocksSnapshotManager.java | 7 +++----
4 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/check-rules/spotbugs-excludes.xml
b/check-rules/spotbugs-excludes.xml
index 9c5eb1fa96c..031ada26f94 100644
--- a/check-rules/spotbugs-excludes.xml
+++ b/check-rules/spotbugs-excludes.xml
@@ -57,6 +57,12 @@
<Bug pattern="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN"/>
<!-- we specifically catch even not thrown exceptions is some places to
be extra defendant -->
<Bug pattern="REC_CATCH_EXCEPTION"/>
+ <!-- We assume 64-bit writes to be atomic. -->
+ <Bug pattern="AT_NONATOMIC_64BIT_PRIMITIVE"/>
+ <!-- These rules fail a lot because they consider some classes to be not
thread safe even when they are used with external
+ synchronization or are not used in multithreaded environment at
all. -->
+ <Bug pattern="AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE"/>
+ <Bug pattern="AT_STALE_THREAD_WRITE_OF_PRIMITIVE"/>
</Or>
</Match>
<Match>
@@ -185,7 +191,7 @@
<Source name="DistributionZoneRebalanceEngine.java"/>
</Match>
<Match>
- <!-- wait/notify condition is atomic, so there is n need to put it into
synchronized block for performance reasons -->
+ <!-- wait/notify condition is atomic, so there is no need to put it into
synchronized block for performance reasons -->
<Bug pattern="NN_NAKED_NOTIFY"/>
<Class
name="org.apache.ignite.internal.pagememory.persistence.checkpoint.Checkpointer"/>
<Method name="cancel"/>
@@ -255,6 +261,11 @@
<Field name="PENDING_CHANGE_TRIGGER_PREFIX_BYTES"/>
</Or>
</Match>
+ <Match>
+ <!-- This class is not a singleton. -->
+ <Bug pattern="SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR"/>
+ <Class
name="org.apache.ignite.internal.partition.replicator.schema.TableDefinitionDiff"/>
+ </Match>
<!-- end of false-positive exclusions -->
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 9b5e1dd9980..daae8068d63 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -99,7 +99,7 @@ cytodynamics = "0.2.0"
pmdTool = "7.13.0"
# NOTE: do not update checlstyle to 11.x.x+, because newer versions are not
compatible with Java 11.
checkstyleTool = "10.26.1"
-spotbugsTool = "4.8.3"
+spotbugsTool = "4.9.4"
[plugins]
openapiGenerator = "org.openapi.generator:7.12.0"
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
index 25aacb045dc..420ab3aff95 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
@@ -3990,6 +3990,7 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
});
}
+ @Disabled("https://issues.apache.org/jira/browse/IGNITE-26249")
@Test
public void testChangePeersAndLearnersChaosWithSnapshot() throws Exception
{
// start cluster
diff --git
a/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/snapshot/RocksSnapshotManager.java
b/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/snapshot/RocksSnapshotManager.java
index 58ca260fb3f..51643d52614 100644
---
a/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/snapshot/RocksSnapshotManager.java
+++
b/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/snapshot/RocksSnapshotManager.java
@@ -155,7 +155,8 @@ public class RocksSnapshotManager {
EnvOptions envOptions = new EnvOptions();
Options options = new Options().setEnv(db.getEnv());
SstFileWriter sstFileWriter = new SstFileWriter(envOptions,
options);
- RocksIterator it = snapshotIterator(range, snapshot)
+ ReadOptions readOptions = new
ReadOptions().setSnapshot(snapshot);
+ RocksIterator it = rangeIterator(range, readOptions)
) {
Path sstFile = snapshotDir.resolve(range.columnFamily().name());
@@ -172,9 +173,7 @@ public class RocksSnapshotManager {
/**
* Creates an iterator over the provided key range.
*/
- private static RocksIterator snapshotIterator(ColumnFamilyRange range,
Snapshot snapshot) {
- var options = new ReadOptions().setSnapshot(snapshot);
-
+ private static RocksIterator rangeIterator(ColumnFamilyRange range,
ReadOptions options) {
if (range.isFullRange()) {
RocksIterator it = range.columnFamily().newIterator(options);