Ошибка при выполнении очень долгого запроса

Доброго времени суток. Столкнулся со следующей проблемой. При генерации отчета, вызванного через код, выходит ошибка.

Вызов отчета

image

Сам отчет состоит из большого количества данных (в том числе изображений), из-за чего его выполнение (до ошибки) составляет чуть более часа.
Сама ошибка выглядит следующим образом

Текст ошибки
2019-02-14 16:23:58.494 DEBUG [http-nio-6903-exec-3/app-core/admin] com.haulmont.cuba.core.app.execution.ExecutionsImpl - End execution context: group=Reporting, key=a207caa4-598f-3fba-fbaf-3b9671159d7f
2019-02-14 16:23:58.558 ERROR [http-nio-6903-exec-3/app/admin] com.haulmont.cuba.web.App - Error handling exception
Original exception:
java.lang.NullPointerException
at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:187)
at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:124)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:312)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:203)
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 org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107)
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:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
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:803)
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:1459)
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)

Exception in handlers:
java.lang.NullPointerException
at com.vaadin.server.Page.getWebBrowser(Page.java:669)
at com.haulmont.cuba.web.exception.ExceptionDialog.browserSupportCopy(ExceptionDialog.java:228)
at com.haulmont.cuba.web.exception.ExceptionDialog.<init>(ExceptionDialog.java:170)
at com.haulmont.cuba.web.exception.ExceptionDialog.<init>(ExceptionDialog.java:87)
at com.haulmont.cuba.web.exception.DefaultExceptionHandler.showDialog(DefaultExceptionHandler.java:88)
at com.haulmont.cuba.web.exception.DefaultExceptionHandler.handle(DefaultExceptionHandler.java:74)
at com.haulmont.cuba.web.exception.ExceptionHandlers.handle(ExceptionHandlers.java:108)
at com.haulmont.cuba.web.App.lambda$init$1840d7d1$1(App.java:223)
at com.vaadin.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1464)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1447)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:312)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:203)
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 org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107)
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:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
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:803)
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:1459)
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)

2019-02-14 16:23:58.559 WARN  [http-nio-6903-exec-3/app/admin] com.haulmont.cuba.web.sys.CubaApplicationServlet - Too long request processing [4469744 ms]: ip=192.168.1.19, url=/app/UIDL/

С чем это может быть связано и как с этим бороться?
Заранее спасибо.

Добрый день.

Скорее всего это связано с протуханием веб-сессии.

Вам нужно увеличить время жизни веб-сессии в томкате
Это вроде бы com.haulmont.cuba.web.WebConfig#getHttpSessionExpirationTimeoutSec

И заодно увеличить время жизни Кубинской пользовательской сессии через com.haulmont.cuba.core.app.ServerConfig#getUserSessionExpirationTimeoutSec

чтобы любой отчёт успевал выполняться.

1 симпатия

Спасибо, через часа полтора будет выяснено.
И, может кто нибудь знает, для чего нужны следующие свойства:

1. reporting.parameterPrototypeQueryLimit
2. reporting.entityTreeModelMaxDepth
1 симпатия

reporting.entityTreeModelMaxDepth - уровень вложенности модели сущностей, которая отображается при создание отчета через визард и для датасета: Сущность или Список сущностей.
reporting.parameterPrototypeQueryLimit - системный параметр, не думаю что стоит менять его значение.

Так же, если отчет выполняется долго, то желательно установить флаг reporting.useBackgroundReportProcessing=true в свойствах веб модуля. В этом случае отчет выполняется асинхронно (сессия пользователя не должна обрываться) и есть возможность отмены отчета.
При асинхронном выполнение стоит обратить внимание на параметр reporting.backgroundReportProcessingTimeoutMs, который отвечает за продолжительность асинхронного выполнения отчета и если время превышено, то отчет автоматически отменяется. По умолчанию равно 10 000 мс.