Periodic NullPointerException

Hi,

Periodically a NullPointerException message appears when the Cuba application is open in the browser. Looking at the logs I can see the following Exception:

    09:05:02.238 ERROR com.haulmont.cuba.web.log.AppLog - Exception: 
java.lang.NullPointerException
	at org.apache.catalina.connector.Request.notifyAttributeRemoved(Request.java:1599)
	at org.apache.catalina.connector.Request.removeAttribute(Request.java:1477)
	at org.apache.catalina.connector.RequestFacade.removeAttribute(RequestFacade.java:552)
	at javax.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:261)
	at org.atmosphere.cpr.AtmosphereRequest.removeAttribute(AtmosphereRequest.java:749)
	at org.atmosphere.container.Servlet30CometSupport.endAsyncContext(Servlet30CometSupport.java:132)
	at org.atmosphere.container.Servlet30CometSupport.complete(Servlet30CometSupport.java:117)
	at org.atmosphere.container.Servlet30CometSupport.complete(Servlet30CometSupport.java:44)
	at org.atmosphere.cpr.AtmosphereResourceImpl.cancel(AtmosphereResourceImpl.java:762)
	at org.atmosphere.cpr.AtmosphereResourceImpl.dirtyClose(AtmosphereResourceImpl.java:868)
	at org.atmosphere.cpr.DefaultBroadcaster.addAtmosphereResource(DefaultBroadcaster.java:1429)
	at org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:407)
	at com.vaadin.server.communication.PushHandler.suspend(PushHandler.java:180)
	at com.vaadin.server.communication.PushHandler$1.run(PushHandler.java:105)
	at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:240)
	at com.vaadin.server.communication.PushHandler.onConnect(PushHandler.java:483)
	at com.vaadin.server.communication.PushAtmosphereHandler.onConnect(PushAtmosphereHandler.java:99)
	at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:75)
	at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
	at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:107)
	at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:66)
	at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
	at com.vaadin.server.communication.PushRequestHandler.handleRequest(PushRequestHandler.java:248)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1436)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:385)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:301)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:192)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:639)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

I do also see these messages (not sure if related or not):

09:05:09.139 WARN  o.atmosphere.cpr.DefaultBroadcaster - Duplicate resource 81bec77b-3a09-4574-92f5-d5edef5c6571. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
09:05:09.140 WARN  c.h.c.web.sys.CubaApplicationServlet - Too long request processing [10823 ms]: ip=172.17.0.1, url=/app/UIDL/
09:05:13.319 WARN  o.atmosphere.cpr.DefaultBroadcaster - Duplicate resource 1b87bd61-6ec6-4bdc-a9e5-9a207ce2563e. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
09:05:24.322 WARN  o.atmosphere.cpr.DefaultBroadcaster - Duplicate resource 0c25692d-a321-43e2-8117-87bd0e5e4e94. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
09:05:24.655 WARN  c.h.c.web.sys.CubaApplicationServlet - Too long request processing [6223 ms]: ip=172.17.0.1, url=/app/UIDL/
09:05:25.682 WARN  o.atmosphere.cpr.DefaultBroadcaster - Duplicate resource dda5a968-2cd0-4bce-9b02-6c540f4afb86. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
09:05:27.859 WARN  o.atmosphere.cpr.DefaultBroadcaster - Duplicate resource 6c244625-fbe4-4056-ba3d-9b264e4c8b08. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one

Does anyone know why these occur?

Hi,

Do you use a proxy server to access your application?

Regards,
Gleb

Hi Gleb,

The application is hosted in Amazon Web Services and I use a loadbalancer (HTTPS enabled) and that redirects to Apache which in turn redirects to a Docker instance of the application.

Thanks

Thank you for reporting the problem. I need to do some investigation to find a solution.

Regards,
Gleb

Hi,

I reproduced the problem. The solution is to set proxy-server options as described in the documentation.

Regards,
Gleb

Hi Gleb,

Do I set the proxy options in the .properties file or the DB?

Many thanks

Hi,

Proxy options should be set in the nginx configuration file, by default it’s nginx.conf.

Hi Gleb,

Sorry I’m still a bit stuck on this one - I can’t find too much information on where the nginx.conf file should be located or the general format of it?

I’m not actually using nginx as a proxy - does that matter?

Many thanks

Hi,

Take a look at this topic. Since version 6.8.0, we implemented the cuba.web.pushLongPollingSuspendTimeoutMs parameter that can be helpfull for you.