Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-8108

[Broker-J] [HTTP] NPE from SaslServlet if request arrives before Broker has activated

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: qpid-java-broker-7.0.0, qpid-java-broker-7.0.1
    • Fix Version/s: None
    • Component/s: Broker-J
    • Labels:
      None

      Description

      If HttpPort#absoluteSessionTimeout has a non-zero value, if a request arrives whilst the Broker is still starting the following stack trace may result. The stack trace is harmless. Once the Broker becomes ready the problem no longer occurs.

      2018-02-22 18:39:42,929 ERROR [qtp1248732436-35] (o.a.q.s.m.p.f.ExceptionHandlingFilter) - Unexpected exception in servlet '/service/sasl':
      java.lang.NullPointerException: null
                      at org.apache.qpid.server.model.AbstractContainer.scheduleTask(AbstractContainer.java:490)
                      at org.apache.qpid.server.management.plugin.HttpManagementUtil.scheduleAbsoluteSessionTimeout(HttpManagementUtil.java:179)
                      at org.apache.qpid.server.management.plugin.HttpManagementUtil.saveAuthorisedSubject(HttpManagementUtil.java:171)
                      at org.apache.qpid.server.management.plugin.servlet.rest.SaslServlet.evaluateSaslResponse(SaslServlet.java:255)
                      at org.apache.qpid.server.management.plugin.servlet.rest.SaslServlet.doPost(SaslServlet.java:179)
                      at org.apache.qpid.server.management.plugin.servlet.rest.AbstractServlet.doPost(AbstractServlet.java:140)
                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
                      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
                      at org.apache.qpid.server.management.plugin.filter.AuthenticationCheckFilter$1.run(AuthenticationCheckFilter.java:157)
                      at org.apache.qpid.server.management.plugin.filter.AuthenticationCheckFilter$1.run(AuthenticationCheckFilter.java:153)
                      at java.security.AccessController.doPrivileged(Native Method)
                      at javax.security.auth.Subject.doAs(Subject.java:422)
                      at org.apache.qpid.server.management.plugin.filter.AuthenticationCheckFilter.doFilterChainAs(AuthenticationCheckFilter.java:152)
                      at org.apache.qpid.server.management.plugin.filter.AuthenticationCheckFilter.doFilter(AuthenticationCheckFilter.java:122)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
                      at org.apache.qpid.server.management.plugin.filter.LoggingFilter.doFilter(LoggingFilter.java:63)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
                      at org.apache.qpid.server.management.plugin.filter.ForbiddingTraceFilter.doFilter(ForbiddingTraceFilter.java:65)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
                      at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:308)
                      at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:262)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
                      at org.apache.qpid.server.management.plugin.filter.ExceptionHandlingFilter.doFilter(ExceptionHandlingFilter.java:59)
                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
                      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)
                      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
                      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593)
                      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
                      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)
                      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
                      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)
                      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
                      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
                      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)
                      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
                      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
                      at org.eclipse.jetty.server.Server.handle(Server.java:564)
                      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
                      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
                      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
                      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
                      at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
                      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
                      at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
                      at org.apache.qpid.server.bytebuffer.QpidByteBufferFactory.lambda$null$0(QpidByteBufferFactory.java:464)
                      at java.lang.Thread.run(Thread.java:748)
      2018-02-22 18:39:42,931 WARN  [qtp1248732436-35] (o.e.j.s.HttpChannel) - /service/sasl
      

      The problem is that the Broker doesn't start the housekeeper until after the Broker is activated. This means there is the possibility for HTTP requests to arrive between the HTTP becoming active and the Broker have completed start-up. If this happens, the NPE results and the Browser gets a 500. QPID-8106 brought this problem to light,

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              kwall Keith Wall
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: