Keith Wall created QPID-8108:
--------------------------------

             Summary: [Broker-J] [HTTP] NPE from SaslServlet if request arrives 
before Broker has activated
                 Key: QPID-8108
                 URL: https://issues.apache.org/jira/browse/QPID-8108
             Project: Qpid
          Issue Type: Bug
          Components: Broker-J
    Affects Versions: qpid-java-broker-7.0.1, qpid-java-broker-7.0.0
            Reporter: Keith Wall


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.



{noformat}
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
{noformat}

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.





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to