This is an automated email from the ASF dual-hosted git repository.
andor pushed a commit to branch branch-3.5
in repository https://gitbox.apache.org/repos/asf/zookeeper.git
The following commit(s) were added to refs/heads/branch-3.5 by this push:
new d6b4cd6 ZOOKEEPER-3223: Configure Spotbugs
d6b4cd6 is described below
commit d6b4cd6c18438d080cc96b2353fd16ec6361efb0
Author: Enrico Olivelli <[email protected]>
AuthorDate: Fri Jan 11 14:06:33 2019 +0100
ZOOKEEPER-3223: Configure Spotbugs
- add spotbugs configuration (default)
- make build pass spotbugs
Author: Enrico Olivelli <eolivelliapache.org>
Reviewers: andorapache.org
Author: Enrico Olivelli <[email protected]>
Reviewers: [email protected]
Closes #763 from eolivelli/fix/ZOOKEEPER-3223-branch-3.5
---
build.xml | 1 +
excludeFindBugsFilter.xml | 14 ++++++++++++++
ivy.xml | 1 +
pom.xml | 22 +++++++++++++++++++++-
zookeeper-jute/pom.xml | 8 ++++++++
zookeeper-server/pom.xml | 6 ++++++
.../main/java/org/apache/zookeeper/ClientCnxn.java | 4 ++++
.../main/java/org/apache/zookeeper/ZooDefs.java | 4 ++++
.../java/org/apache/zookeeper/server/DataNode.java | 2 ++
.../org/apache/zookeeper/server/EphemeralType.java | 3 +++
.../zookeeper/server/persistence/FileTxnLog.java | 2 +-
.../server/quorum/AuthFastLeaderElection.java | 3 +++
.../zookeeper/server/quorum/CommitProcessor.java | 3 +++
13 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/build.xml b/build.xml
index 2c06352..5d1fc8f 100644
--- a/build.xml
+++ b/build.xml
@@ -28,6 +28,7 @@ xmlns:cs="antlib:com.puppycrawl.tools.checkstyle.ant">
<!-- ====================================================== -->
<property name="slf4j.version" value="1.7.25"/>
<property name="commons-cli.version" value="1.2"/>
+ <property name="spotbugsannotations.version" value="3.1.8"/>
<property name="wagon-http.version" value="2.4"/>
<property name="maven-ant-tasks.version" value="2.1.3"/>
diff --git a/excludeFindBugsFilter.xml b/excludeFindBugsFilter.xml
new file mode 100644
index 0000000..c836911
--- /dev/null
+++ b/excludeFindBugsFilter.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<FindBugsFilter>
+ <!-- this work work on JDK11
https://github.com/spotbugs/spotbugs-maven-plugin/issues/92 -->
+ <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
+
+ <!-- this problem is to be addressed in ZOOKEEPER-3227 -->
+ <Bug pattern="DM_DEFAULT_ENCODING"/>
+
+ <!-- not really a problem -->
+ <Bug pattern="DM_EXIT"/>
+
+</FindBugsFilter>
+
diff --git a/ivy.xml b/ivy.xml
index 035bb4f..691c8cf 100644
--- a/ivy.xml
+++ b/ivy.xml
@@ -46,6 +46,7 @@
<dependency org="org.slf4j" name="slf4j-api" rev="${slf4j.version}"/>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="${slf4j.version}"
transitive="false"/>
<dependency org="commons-cli" name="commons-cli"
rev="${commons-cli.version}" />
+ <dependency org="com.github.spotbugs" name="spotbugs-annotations"
rev="${spotbugsannotations.version}" />
<dependency org="org.apache.maven.wagon" name="wagon-http"
rev="${wagon-http.version}"
conf="mvn-ant-task->default"/>
diff --git a/pom.xml b/pom.xml
index 99600f0..5d3f7f7 100755
--- a/pom.xml
+++ b/pom.xml
@@ -275,6 +275,7 @@
<kerby.version>1.1.0</kerby.version>
<bouncycastle.version>1.56</bouncycastle.version>
<commons-collections.version>3.2.2</commons-collections.version>
+ <spotbugsannotations.version>3.1.8</spotbugsannotations.version>
</properties>
<dependencyManagement>
@@ -407,6 +408,13 @@
<artifactId>jline</artifactId>
<version>${jline.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <version>${spotbugsannotations.version}</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -458,6 +466,14 @@
<artifactId>clover-maven-plugin</artifactId>
<version>4.3.1</version>
</plugin>
+ <plugin>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-maven-plugin</artifactId>
+ <version>3.1.8</version>
+ <configuration>
+ <excludeFilterFile>excludeFindBugsFilter.xml</excludeFilterFile>
+ </configuration>
+ </plugin>
</plugins>
</pluginManagement>
@@ -485,7 +501,11 @@
</execution>
</executions>
</plugin>
- </plugins>
+ <plugin>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
</build>
<reporting>
diff --git a/zookeeper-jute/pom.xml b/zookeeper-jute/pom.xml
index 5c8071d..3582d45 100755
--- a/zookeeper-jute/pom.xml
+++ b/zookeeper-jute/pom.xml
@@ -145,6 +145,14 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <!-- spotbugs does not make sense for generated code -->
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
</build>
diff --git a/zookeeper-server/pom.xml b/zookeeper-server/pom.xml
index 008f534..12fe6ed 100755
--- a/zookeeper-server/pom.xml
+++ b/zookeeper-server/pom.xml
@@ -35,6 +35,12 @@
<dependencies>
<dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<scope>test</scope>
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java
index ef53edf..db2b486 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -97,6 +98,7 @@ import org.slf4j.MDC;
* connected to as needed.
*
*/
+@SuppressFBWarnings({"EI_EXPOSE_REP", "EI_EXPOSE_REP2"})
public class ClientCnxn {
private static final Logger LOG =
LoggerFactory.getLogger(ClientCnxn.class);
@@ -479,6 +481,7 @@ public class ClientCnxn {
waitingEvents.add(new LocalCallback(cb, rc, path, ctx));
}
+ @SuppressFBWarnings("JLM_JSR166_UTILCONCURRENT_MONITORENTER")
public void queuePacket(Packet packet) {
if (wasKilled) {
synchronized (waitingEvents) {
@@ -495,6 +498,7 @@ public class ClientCnxn {
}
@Override
+ @SuppressFBWarnings("JLM_JSR166_UTILCONCURRENT_MONITORENTER")
public void run() {
try {
isRunning = true;
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java
index f685e32..97aa28a 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
import java.util.Collections;
@@ -118,18 +119,21 @@ public class ZooDefs {
/**
* This is a completely open ACL .
*/
+ @SuppressFBWarnings(value = "MS_MUTABLE_COLLECTION", justification =
"Cannot break API")
public final ArrayList<ACL> OPEN_ACL_UNSAFE = new ArrayList<ACL>(
Collections.singletonList(new ACL(Perms.ALL,
ANYONE_ID_UNSAFE)));
/**
* This ACL gives the creators authentication id's all permissions.
*/
+ @SuppressFBWarnings(value = "MS_MUTABLE_COLLECTION", justification =
"Cannot break API")
public final ArrayList<ACL> CREATOR_ALL_ACL = new ArrayList<ACL>(
Collections.singletonList(new ACL(Perms.ALL, AUTH_IDS)));
/**
* This ACL gives the world the ability to read.
*/
+ @SuppressFBWarnings(value = "MS_MUTABLE_COLLECTION", justification =
"Cannot break API")
public final ArrayList<ACL> READ_ACL_UNSAFE = new ArrayList<ACL>(
Collections
.singletonList(new ACL(Perms.READ, ANYONE_ID_UNSAFE)));
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataNode.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataNode.java
index 0859aab..0e4ed73 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataNode.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataNode.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper.server;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
@@ -36,6 +37,7 @@ import org.apache.zookeeper.data.StatPersisted;
* array of ACLs, a stat object, and a set of its children's paths.
*
*/
+@SuppressFBWarnings("EI_EXPOSE_REP2")
public class DataNode implements Record {
/** the data for this datanode */
byte data[];
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/EphemeralType.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/EphemeralType.java
index f5d58ae..d4c6c80 100644
---
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/EphemeralType.java
+++
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/EphemeralType.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper.server;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.zookeeper.CreateMode;
import java.util.Collections;
@@ -210,6 +211,8 @@ public enum EphemeralType {
* @param ttl ttl
* @throws IllegalArgumentException if the ttl is not valid for the mode
*/
+ @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT",
+ justification = "toEphemeralOwner may throw
IllegalArgumentException")
public static void validateTTL(CreateMode mode, long ttl) {
if (mode.isTTL()) {
TTL.toEphemeralOwner(ttl);
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnLog.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnLog.java
index 4f0ef2a..a3c8702 100644
---
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnLog.java
+++
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnLog.java
@@ -155,7 +155,7 @@ public class FileTxnLog implements TxnLog {
* @param serverStats used to update fsyncThresholdExceedCount
*/
@Override
- public void setServerStats(ServerStats serverStats) {
+ public synchronized void setServerStats(ServerStats serverStats) {
this.serverStats = serverStats;
}
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java
index 0f8c9c1..2892868 100644
---
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java
+++
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper.server.quorum;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
@@ -459,6 +460,8 @@ public class AuthFastLeaderElection implements Election {
}
}
+ @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED",
+ justification = "tryAcquire result not chacked, but it is
not an issue")
private void process(ToSend m) {
int attempts = 0;
byte zeroes[];
diff --git
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/CommitProcessor.java
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/CommitProcessor.java
index e87f359..a505c00 100644
---
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/CommitProcessor.java
+++
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/CommitProcessor.java
@@ -18,6 +18,7 @@
package org.apache.zookeeper.server.quorum;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.LinkedBlockingQueue;
@@ -316,6 +317,7 @@ public class CommitProcessor extends
ZooKeeperCriticalThread implements
}
}
+ @SuppressFBWarnings("NN_NAKED_NOTIFY")
synchronized private void wakeup() {
notifyAll();
}
@@ -333,6 +335,7 @@ public class CommitProcessor extends
ZooKeeperCriticalThread implements
}
}
+ @Override
public void processRequest(Request request) {
if (stopped) {
return;