Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-15960 Update guava to 27.0-jre in hadoop-project
  3. HADOOP-16220

Add findbugs ignores for unjustified issues during update to guava to 27.0-jre in hadoop-project

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.0.4, 3.3.0, 3.2.1, 3.1.3
    • 3.0.4, 3.3.0, 3.2.1, 3.1.3
    • None
    • None
    • Reviewed

    Description

      There are some findbugs issues with the guava update that seemed unjustified and should be fixed before the update:

      • Null passed for non-null parameter of com.google.common.base.Preconditions.checkState(boolean, String, Object, Object, Object) in org.apache.hadoop.hdfs.qjournal.server.Journal.getPersistedPaxosData(long)
        In org/apache/hadoop/hdfs/qjournal/server/Journal.java:1064 we call
        Preconditions.checkState(ret != null &&
                  ret.getSegmentState().getStartTxId() == segmentTxId,
                  "Bad persisted data for segment %s: %s ; journal id: %s",
                  segmentTxId, ret, journalId);
        

        for this call findbug assumes that Argument 4 might be null but must not be null, but Guava 27.0's com.google.common.base.Preconditions#checkState(boolean, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object) is annotated like the following:

          public static void checkState(
              boolean b,
              @Nullable String errorMessageTemplate,
              @Nullable Object p1,
              @Nullable Object p2,
              @Nullable Object p3) {
        

        so we have @Nullable on each parameter for the method. I don't see this warning as justified, or need to be fixed.

      • Null passed for non-null parameter of com.google.common.base.Preconditions.checkArgument(boolean, String, Object) in org.apache.hadoop.hdfs.qjournal.server.JournalNode.getLogDir(String, String)
        In org/apache/hadoop/hdfs/qjournal/server/JournalNode.java:325 we call
            Preconditions.checkArgument(jid != null &&
                !jid.isEmpty(),
                "bad journal identifier: %s", jid);
        

        for this call findbug assumes that Argument 3 might be null but must not be null, but Guava 27.0's com.google.common.base.Preconditions#checkArgument(boolean, java.lang.String, java.lang.Object) is annotated like the following:

          public static void checkArgument(
              boolean b, @Nullable String errorMessageTemplate, @Nullable Object p1) {
        

        so we have @Nullable on argument 3, and that renders the assumption incorrect.

      • Nullcheck of jid at line 346 of value previously dereferenced in org.apache.hadoop.hdfs.qjournal.server.JournalNode.getLogDir(String, String)
        This is about the assert jid != null; at JournalNode.java:346. I would leave it as is, it's not a redundant check, just additional information. (I'm not a fan of using assert in production code, but if it's there we can leave it).

      Attachments

        Issue Links

          Activity

            People

              gabor.bota Gabor Bota
              gabor.bota Gabor Bota
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: