Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-449

Add a NULL check to protect DeadNodeHandler#onMessage

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 0.2.1
    • None

    Description

      Add a NULL check to protect the situation below(may only happened in the case of unit test):
      1.A new datanode register to SCM.
      2. There is no container allocated in the new datanode temporarily.
      3.The new datanode dead and an event was fired to DeadNodeHandler
      4.In function DeadNodeHandler#onMessage, there will get nothing in node2ContainerMap and containers will be NULL
      5.NullPointerException will be throwen in the following iterate of containers like:

      [ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.535 s <<< FAILURE! - in org.apache.hadoop.hdds.scm.node.TestDeadNodeHandler
      [ERROR] testStatisticsUpdate(org.apache.hadoop.hdds.scm.node.TestDeadNodeHandler)  Time elapsed: 0.33 s  <<< ERROR!
      java.lang.NullPointerException
              at org.apache.hadoop.hdds.scm.node.DeadNodeHandler.onMessage(DeadNodeHandler.java:68)
              at org.apache.hadoop.hdds.scm.node.TestDeadNodeHandler.testStatisticsUpdate(TestDeadNodeHandler.java:179)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
      

      Attachments

        1. HDDS-449.000.patch
          1.0 kB
          LiXin Ge

        Activity

          People

            GeLiXin LiXin Ge
            GeLiXin LiXin Ge
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: