Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-4211

failed volume causes DataNode#getVolumeInfo NPEs on multi-BP DN

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 2.0.2-alpha
    • None
    • datanode
    • None

    Description

      On a DN with failed.volumes.tolerated=0 a disk went bad. After restarting the DN, the following backtrace was observed when accessing /jmx:

      2012-06-12 16:21:43,248 ERROR org.apache.hadoop.jmx.JMXJsonServlet:
      getting attribute VolumeInfo of
      Hadoop:service=DataNode,name=DataNodeInfo threw an exception
      javax.management.RuntimeMBeanException: java.lang.NullPointerException
             at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:856)
             at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrowMaybeMBeanException(DefaultMBeanServerInterceptor.java:869)
             at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:670)
             at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
             at org.apache.hadoop.jmx.JMXJsonServlet.writeAttribute(JMXJsonServlet.java:315)
             at org.apache.hadoop.jmx.JMXJsonServlet.listBeans(JMXJsonServlet.java:293)
             at org.apache.hadoop.jmx.JMXJsonServlet.doGet(JMXJsonServlet.java:193)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
             at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
             at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
             at org.apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter.doFilter(StaticUserWebFilter.java:109)
             at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
             at org.apache.hadoop.http.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:947)
             at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
             at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
             at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
            at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
             at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
            at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
             at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
             at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
             at org.mortbay.jetty.Server.handle(Server.java:326)
             at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
             at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
             at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
             at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
             at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
             at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
             at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
      Caused by: java.lang.NullPointerException
             at org.apache.hadoop.hdfs.server.datanode.DataNode.getVolumeInfo(DataNode.java:2130)
             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
             at java.lang.reflect.Method.invoke(Method.java:597)
             at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:167)
             at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:96)
             at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:33)
             at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
             at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:65)
      

      Since tolerated=0 the DN should have errored out rather than starting up, but due to having multiple BPs configured the DN does not exit correctly in this situation.

      Attachments

        Issue Links

          Activity

            People

              adi2 Andy Isaacson
              adi2 Andy Isaacson
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: