Hadoop Map/Reduce
  1. Hadoop Map/Reduce
  2. MAPREDUCE-4195

With invalid queueName request param, jobqueue_details.jsp shows NPE

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 1.0.0
    • Fix Version/s: 1.2.0
    • Component/s: jobtracker
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      When you access /jobqueue_details.jsp manually, instead of via a link, it has queueName set to null internally and this goes for a lookup into the scheduling info maps as well.

      As a result, if using FairScheduler, a Pool with String name = null gets created and this brings the scheduler down. I have not tested what happens to the CapacityScheduler, but ideally if no queueName is set in that jsp, it should fall back to 'default'. Otherwise, this brings down the JobTracker completely.

      FairScheduler must also add a check to not create a pool with 'null' name.

      The following is the strace that ensues:

      ERROR org.mortbay.log: /jobqueue_details.jsp 
      java.lang.NullPointerException 
      at org.apache.hadoop.mapred.jobqueue_005fdetails_jsp._jspService(jobqueue_005fdetails_jsp.java:71) 
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
      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.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:829) 
      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) 
      INFO org.apache.hadoop.ipc.Server: IPC Server handler 2 on 9001, call heartbeat from XYZ:MNOP: error: java.io.IOException: java.lang.NullPointerException 
      java.io.IOException: java.lang.NullPointerException 
      at org.apache.hadoop.mapred.SchedulingAlgorithms$FairShareComparator.compare(SchedulingAlgorithms.java:95) 
      at org.apache.hadoop.mapred.SchedulingAlgorithms$FairShareComparator.compare(SchedulingAlgorithms.java:68) 
      at java.util.Arrays.mergeSort(Unknown Source) 
      at java.util.Arrays.sort(Unknown Source) 
      at java.util.Collections.sort(Unknown Source) 
      at org.apache.hadoop.mapred.FairScheduler.assignTasks(FairScheduler.java:435) 
      at org.apache.hadoop.mapred.JobTracker.heartbeat(JobTracker.java:3226) 
      at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
      at java.lang.reflect.Method.invoke(Unknown Source) 
      at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557) 
      at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1434) 
      at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1430) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Unknown Source) 
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) 
      at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428)
      
      1. MR-4195
        0.6 kB
        Gera Shegalov
      2. MR-4195
        0.6 kB
        Gera Shegalov

        Issue Links

          Activity

          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open Resolved Resolved
          48d 21h 49m 1 Alejandro Abdelnur 13/Jun/12 19:01
          Resolved Resolved Closed Closed
          335d 11h 14m 1 Matt Foley 15/May/13 06:15
          Matt Foley made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Hide
          Matt Foley added a comment -

          Closed upon release of Hadoop 1.2.0.

          Show
          Matt Foley added a comment - Closed upon release of Hadoop 1.2.0.
          Suresh Srinivas made changes -
          Fix Version/s 1.2.0 [ 12321661 ]
          Fix Version/s 1.1.0 [ 12317960 ]
          Alejandro Abdelnur made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Hide
          Alejandro Abdelnur added a comment -

          Thanks Gera. Committed to branch-1

          Show
          Alejandro Abdelnur added a comment - Thanks Gera. Committed to branch-1
          Hide
          Alejandro Abdelnur added a comment -

          +1

          Show
          Alejandro Abdelnur added a comment - +1
          Gera Shegalov made changes -
          Attachment MR-4195 [ 12524402 ]
          Hide
          Gera Shegalov added a comment -

          Hi Harsh,

          Yes, I am aware that this is not a documented way but this obviously has happened given MAPREDUCE-3674.

          "Grant license to ASF" is selected.

          Thanks,

          Gera

          Show
          Gera Shegalov added a comment - Hi Harsh, Yes, I am aware that this is not a documented way but this obviously has happened given MAPREDUCE-3674 . "Grant license to ASF" is selected. Thanks, Gera
          Harsh J made changes -
          Assignee Harsh J [ qwertymaniac ]
          Hide
          Harsh J added a comment -

          Thanks for filing this Gera. Usually one's never supposed to access this URL directly (its not documented to). Otherwise your patch looks fine to me, to avoid null objects in the JSP.

          You've not granted ASF the rights to use your patch. If you're willing to contribute this into our repos, please re-upload with the grant added (it appears as a radio option in the bottom of attach-file dialog).

          Many thanks for doing this!

          Show
          Harsh J added a comment - Thanks for filing this Gera. Usually one's never supposed to access this URL directly (its not documented to). Otherwise your patch looks fine to me, to avoid null objects in the JSP. You've not granted ASF the rights to use your patch. If you're willing to contribute this into our repos, please re-upload with the grant added (it appears as a radio option in the bottom of attach-file dialog). Many thanks for doing this!
          Gera Shegalov made changes -
          Attachment MR-4195 [ 12524338 ]
          Hide
          Gera Shegalov added a comment -

          The fix in MAPREDUCE-3674 was incomplete. In src/webapps/job/jobqueue_details.jsp, a null check is needed for schedInfo, when the queueName is invalid. This fix makes sure that a meaningful info is printed instead of NPE.

          Show
          Gera Shegalov added a comment - The fix in MAPREDUCE-3674 was incomplete. In src/webapps/job/jobqueue_details.jsp, a null check is needed for schedInfo, when the queueName is invalid. This fix makes sure that a meaningful info is printed instead of NPE.
          Gera Shegalov made changes -
          Field Original Value New Value
          Link This issue is a clone of MAPREDUCE-3674 [ MAPREDUCE-3674 ]
          Gera Shegalov created issue -

            People

            • Assignee:
              Unassigned
              Reporter:
              Gera Shegalov
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development