Fix FindBugs warnings in cds-access-client and enable enforcement 72/47472/3
authorTom Pantelis <tpanteli@brocade.com>
Tue, 25 Oct 2016 05:12:12 +0000 (01:12 -0400)
committerTom Pantelis <tpanteli@brocade.com>
Wed, 26 Oct 2016 16:30:37 +0000 (16:30 +0000)
Change-Id: I295538aa4af61c1eec81fd5b9143c5514bf17f2e
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
opendaylight/md-sal/cds-access-client/pom.xml
opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/SequencedQueue.java

index 376be8c107a612f3f9b19a5de5d2e8707e7f38a1..e229b4114a6f1fcea2339d465dcf69ac75e2050e 100644 (file)
             <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
           </configuration>
         </plugin>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>findbugs-maven-plugin</artifactId>
+          <configuration>
+            <failOnError>true</failOnError>
+          </configuration>
+        </plugin>
       </plugins>
     </build>
 
index 0e8d1b9d56b8c5674268ca1ec21b9fb24b43ad3f..596e353c981f3d21d193c66795753233c40bb6eb 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Ticker;
 import com.google.common.base.Verify;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayDeque;
 import java.util.Iterator;
 import java.util.Optional;
@@ -154,8 +155,14 @@ final class SequencedQueue {
         }
 
         // Ready to transmit
-        currentInflight.offer(e);
-        LOG.debug("Enqueued request {} to queue {}", request, this);
+
+        if (currentInflight.offer(e)) {
+            LOG.debug("Enqueued request {} to queue {}", request, this);
+        } else {
+            // This shouldn't happen since the queue has unlimited capacity but check anyway to avoid FindBugs warning
+            // about checking return value.
+            LOG.warn("Fail to enqueued request {} to queue {}", request, this);
+        }
 
         e.retransmit(backend, nextTxSequence(), now);
         if (expectingTimer == null) {
@@ -172,6 +179,8 @@ final class SequencedQueue {
      * - if a matching entry is not found, but it makes sense to keep looking at other queues, return null
      * - if a conflicting entry is encountered, indicating we should ignore this request, return an empty Optional
      */
+    @SuppressFBWarnings(value = "NP_OPTIONAL_RETURN_NULL",
+            justification = "Returning null Optional is documented in the API contract.")
     private static Optional<SequencedQueueEntry> findMatchingEntry(final Queue<SequencedQueueEntry> queue,
             final ResponseEnvelope<?> envelope) {
         // Try to find the request in a queue. Responses may legally come back in a different order, hence we need