HBase
  1. HBase
  2. HBASE-2806

DNS hiccups cause uncaught NPE in HServerAddress#getBindAddress

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.90.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      Yesterday at the Hadoop Summit, the "HADOOP" wireless network was using a pair of DNS servers that couldn't resolve localhost.. This prevented me from starting HBase as the construction of the HMaster was failing with the following rather cryptic error:

      2010-06-29 14:30:24,603 ERROR org.apache.hadoop.hbase.master.HMaster: Failed to start master
      java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster$LocalHMasternull
              at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:1217)
              at org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:112)
              at org.apache.hadoop.hbase.master.HMaster.doMain(HMaster.java:1298)
              at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:1355)
      Caused by: java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
              at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:1215)
              ... 3 more
      Caused by: java.lang.NullPointerException
              at org.apache.hadoop.hbase.HServerAddress.getBindAddress(HServerAddress.java:89)
              at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:204)
              at org.apache.hadoop.hbase.master.HMaster$LocalHMaster.<init>(HMaster.java:1230)
              ... 8 more
      

      The NullPointerException in getBindAddress comes from the following line of code:

          return this.address.getAddress().getHostAddress();
      

      where getAddress() was returning null.

      I think the code should check for this case, log an appropriate error message (to point whoever is going to troubleshoot the problem in the right direction), and throw something else than an NPE.

        Activity

        Hide
        Benoit Sigoure added a comment -

        Sorry for the compilation breakage, this 1-line fix remained uncommitted in my local Git repo, I ran git commit --amend and forgot the -a to get this change in the patch. Thanks for the fix Jonathan!

        Show
        Benoit Sigoure added a comment - Sorry for the compilation breakage, this 1-line fix remained uncommitted in my local Git repo, I ran git commit --amend and forgot the -a to get this change in the patch. Thanks for the fix Jonathan!
        Hide
        Jonathan Gray added a comment -

        Committed compile fix to trunk.

        Show
        Jonathan Gray added a comment - Committed compile fix to trunk.
        Hide
        Jonathan Gray added a comment -

        I think this is all that's needed. If no one responds soon I will commit it.

        Show
        Jonathan Gray added a comment - I think this is all that's needed. If no one responds soon I will commit it.
        Hide
        Jonathan Gray added a comment -

        Trunk doesn't compile after this got committed

        Show
        Jonathan Gray added a comment - Trunk doesn't compile after this got committed
        Hide
        HBase Review Board added a comment -

        Message from: stack@duboce.net

        -----------------------------------------------------------
        This is an automatically generated e-mail. To reply, visit:
        http://review.hbase.org/r/244/#review301
        -----------------------------------------------------------

        Ship it!

        • stack
        Show
        HBase Review Board added a comment - Message from: stack@duboce.net ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://review.hbase.org/r/244/#review301 ----------------------------------------------------------- Ship it! stack
        Hide
        stack added a comment -

        Thanks for the patch Benoît

        Show
        stack added a comment - Thanks for the patch Benoît
        Hide
        stack added a comment -

        Attaching patch that was +1'd over on review.hbase.org.

        Show
        stack added a comment - Attaching patch that was +1'd over on review.hbase.org.
        Hide
        HBase Review Board added a comment -

        Message from: "Benoit Sigoure" <tsunanet@gmail.com>

        -----------------------------------------------------------
        This is an automatically generated e-mail. To reply, visit:
        http://review.hbase.org/r/244/
        -----------------------------------------------------------

        Review request for hbase.

        Summary
        -------

        The code returns null when this happens. Also, whenever an instance
        of HServerAddress is created, the code will verify that the IP can
        be retrieved and throw an IllegalArgumentException if it cannot.

        This change also fixes some other random little things like:

        • Remove unnecessary parentheses.
        • Remove unnecessary uses of `this' outside of constructors.
        • Missing spaces after `if'.
        • Remove wildcard imports.
        • Remove unnecessary creation of objects.

        This addresses bug HBASE-2806.
        http://issues.apache.org/jira/browse/HBASE-2806

        Diffs


        trunk/src/main/java/org/apache/hadoop/hbase/HServerAddress.java 959479

        Diff: http://review.hbase.org/r/244/diff

        Testing
        -------

        Code compiles.

        Thanks,

        Benoit

        Show
        HBase Review Board added a comment - Message from: "Benoit Sigoure" <tsunanet@gmail.com> ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://review.hbase.org/r/244/ ----------------------------------------------------------- Review request for hbase. Summary ------- The code returns null when this happens. Also, whenever an instance of HServerAddress is created, the code will verify that the IP can be retrieved and throw an IllegalArgumentException if it cannot. This change also fixes some other random little things like: Remove unnecessary parentheses. Remove unnecessary uses of `this' outside of constructors. Missing spaces after `if'. Remove wildcard imports. Remove unnecessary creation of objects. This addresses bug HBASE-2806 . http://issues.apache.org/jira/browse/HBASE-2806 Diffs trunk/src/main/java/org/apache/hadoop/hbase/HServerAddress.java 959479 Diff: http://review.hbase.org/r/244/diff Testing ------- Code compiles. Thanks, Benoit

          People

          • Assignee:
            Benoit Sigoure
            Reporter:
            Benoit Sigoure
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development