Exception org.atmosphere.container.JSR356Endpoint onError

We just started seeing this exception that cause my system message hook (not positive if it’s communications error or session expired) to run and force a user logoff. We are running Vaadin 7.7.9 (with atmosphere-runtime-2.2.9.vaadin2.jar) with push mode is automatic (though we use no special push code) on Tomcat 8.0.35 with Java 1.8.0_91-b14. As it’s a production server, we’re not easily able to debug it.

The task we were doing that triggers this exception doesn’t seem to replicate on our test system. Does this exception mean anything to anybody as to what may be going wrong? We have many different deployments, but only this one seems to have an issue that we’ve noted so far, and there’s no error in our application logs.

Jun 13, 2017 6:52:52 PM org.atmosphere.container.JSR356Endpoint onError
SEVERE: 
java.io.EOFException
    at org.apache.coyote.http11.upgrade.NioServletInputStream.doRead(NioServletInputStream.java:97)
    at org.apache.coyote.http11.upgrade.AbstractServletInputStream.read(AbstractServletInputStream.java:124)
    at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:60)
    at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:185)
    at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198)
    at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:647)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

As a quick update, the payload for the interaction is about 40KB as the widget holds all that content, plus whatever other data is passed in the UIDL.

To make it worse, I noted that it seems to work on the latest Firefox, Chrome and Opera browsers, but I see errors on the latest Safari. But when I attempt to do the same think on Safari on my desktop inside Eclipse, no such exception occurs.

Even on the server where the issue occurs, if I pare down the contents so it’s 21KB, it works again. Perhaps this is some sort of Webkit issue that doesn’t appear when running Tomcat in my Eclipse?

I suspect it’s webkit/safari Push over the Internet. Somehow, there’s no issue when running on Tomcat inside Eclipse on my laptop, but when I put that particular setup data into another remote server, it also shows this error. But other browsers do not.

I had same this issue. I think it is due to how threads are managed in vaadin server push.
Regards

If you have any information on what you think is being mismanaged, I’m sure team Vaadin would love to hear. It’s tricky because this error makes it appear that our application is failing repeatedly, yet our code isn’t even called. From the user’s perspective, they just get an error about lost communications with the server and a spin indicator that will never go away. Even if the user refreshes the browser (we use preserve on refresh as refresh does fix some transient UI issues), it just returns to a spinning UI that seems to never recover and they have to close the browser as even the Logoff button stops working.

Hi.
This is the log i got:

2017-07-22T15:21:51.993969+00:00 heroku[router]
: at=error code=H15 desc="Idle connection" method=GET path="/dashboard/PUSH?v-uiId=2&v-pushId=f96f745f-8d28-49c5-a2cb-7e63af6abdd3&X-Atmosphere-tracking-id=93b27b52-96a8-4c92-b8f4-8ce5dfed00d4&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true" host=neonplatform.herokuapp.com request_id=b4db2d10-a651-4cf8-8c7c-5f0b68e2ecb0 fwd="138.75.138.18" dyno=web.1 connect=0ms service=55008ms status=503 bytes= protocol=https
2017-07-22T15:21:51.995483+00:00 app[web.1]
: Jul 22, 2017 3:21:51 PM org.atmosphere.container.JSR356Endpoint onError
2017-07-22T15:21:51.995495+00:00 app[web.1]
: SEVERE:
2017-07-22T15:21:51.995496+00:00 app[web.1]
: java.io.EOFException
2017-07-22T15:21:51.995498+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242)
2017-07-22T15:21:51.995500+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182)
2017-07-22T15:21:51.995500+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63)
2017-07-22T15:21:51.995501+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
2017-07-22T15:21:51.995502+00:00 app[web.1]
: at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
2017-07-22T15:21:51.995502+00:00 app[web.1]
: at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
2017-07-22T15:21:51.995503+00:00 app[web.1]
: at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2017-07-22T15:21:51.995504+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
2017-07-22T15:21:51.995505+00:00 app[web.1]
: at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2017-07-22T15:21:51.995505+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-07-22T15:21:51.995506+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-07-22T15:21:51.995507+00:00 app[web.1]
: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2017-07-22T15:21:51.995508+00:00 app[web.1]
: at java.lang.Thread.run(Thread.java:745)
2017-07-22T15:21:51.995509+00:00 app[web.1]
:
2017-07-22T15:21:52.770041+00:00 heroku[router]
: at=info method=POST path="/dashboard/HEARTBEAT/?v-uiId=2" host=neonplatform.herokuapp.com request_id=774c04ee-0d16-4ad2-9c97-040ad146f099 fwd="138.75.138.18" dyno=web.1 connect=1ms service=5ms status=200 bytes=143 protocol=https
2017-07-22T15:22:52.748330+00:00 heroku[router]
: at=error code=H15 desc="Idle connection" method=GET path="/dashboard/PUSH?v-uiId=2&v-pushId=f96f745f-8d28-49c5-a2cb-7e63af6abdd3&X-Atmosphere-tracking-id=93b27b52-96a8-4c92-b8f4-8ce5dfed00d4&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true" host=neonplatform.herokuapp.com request_id=4eeeb85c-9b32-4c45-8502-32254cfeddc7 fwd="138.75.138.18" dyno=web.1 connect=0ms service=55005ms status=503 bytes= protocol=https
2017-07-22T15:22:52.751043+00:00 app[web.1]
: Jul 22, 2017 3:22:52 PM org.atmosphere.container.JSR356Endpoint onError
2017-07-22T15:22:52.751056+00:00 app[web.1]
: SEVERE:
2017-07-22T15:22:52.751057+00:00 app[web.1]
: java.io.EOFException
2017-07-22T15:22:52.751058+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242)
2017-07-22T15:22:52.751058+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182)
2017-07-22T15:22:52.751059+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63)
2017-07-22T15:22:52.751060+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
2017-07-22T15:22:52.751060+00:00 app[web.1]
: at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
2017-07-22T15:22:52.751061+00:00 app[web.1]
: at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
2017-07-22T15:22:52.751062+00:00 app[web.1]
: at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2017-07-22T15:22:52.751062+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
2017-07-22T15:22:52.751063+00:00 app[web.1]
: at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2017-07-22T15:22:52.751064+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-07-22T15:22:52.751064+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-07-22T15:22:52.751065+00:00 app[web.1]
: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2017-07-22T15:22:52.751066+00:00 app[web.1]
: at java.lang.Thread.run(Thread.java:745)
2017-07-22T15:22:52.751066+00:00 app[web.1]
:
2017-07-22T15:22:53.506403+00:00 heroku[router]
: at=info method=POST path="/dashboard/HEARTBEAT/?v-uiId=2" host=neonplatform.herokuapp.com request_id=2e0f9453-ffc2-44bc-9377-6b4d8c075060 fwd="138.75.138.18" dyno=web.1 connect=0ms service=2ms status=200 bytes=143 protocol=https
2017-07-22T15:22:58.495824+00:00 app[web.1]
: Jul 22, 2017 3:22:58 PM org.atmosphere.util.IOUtils guestRawServletPath
2017-07-22T15:22:58.495843+00:00 app[web.1]
: WARNING: More than one Servlet Mapping defined. WebSocket may not work org.apache.catalina.core.ApplicationServletRegistration@2bdefe7
2017-07-22T15:23:32.570351+00:00 app[web.1]
: [DEBUG: 2017-07-22 15:23:32 (UserDeviceControlPresenter.java:378)]
 Reactor trigger but ignored ..... email: aaa
2017-07-22T15:23:32.570620+00:00 app[web.1]
: [DEBUG: 2017-07-22 15:23:32 (UserDeviceControlPresenter.java:378)]
 Reactor trigger but ignored ..... email: admin
2017-07-22T15:23:32.570855+00:00 app[web.1]
: [DEBUG: 2017-07-22 15:23:32 (UserDeviceControlPresenter.java:376)]
 Reactor accept ..... email: admin
2017-07-22T15:23:32.849309+00:00 app[web.1]
: create User Session sessionid: 60054643-691a-4faf-a145-08c93ba97756
2017-07-22T15:23:33.460731+00:00 heroku[router]
: at=info method=GET path="/dashboard/APP/connector/2/264/source/img1.png" host=neonplatform.herokuapp.com request_id=652c091c-3fcb-41dc-b2fc-32b9004f473d fwd="138.75.138.18" dyno=web.1 connect=0ms service=188ms status=200 bytes=378308 protocol=https
2017-07-22T15:25:26.406938+00:00 app[web.1]
: Jul 22, 2017 3:25:26 PM org.atmosphere.container.JSR356Endpoint onError
2017-07-22T15:25:26.406951+00:00 app[web.1]
: SEVERE:
2017-07-22T15:25:26.406951+00:00 app[web.1]
: java.io.EOFException
2017-07-22T15:25:26.406952+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242)
2017-07-22T15:25:26.406953+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182)
2017-07-22T15:25:26.406953+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63)
2017-07-22T15:25:26.406954+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
2017-07-22T15:25:26.406954+00:00 app[web.1]
: at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
2017-07-22T15:25:26.406955+00:00 app[web.1]
: at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
2017-07-22T15:25:26.406955+00:00 app[web.1]
: at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2017-07-22T15:25:26.406955+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
2017-07-22T15:25:26.406956+00:00 app[web.1]
: at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2017-07-22T15:25:26.406956+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-07-22T15:25:26.406959+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-07-22T15:25:26.406960+00:00 app[web.1]
: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2017-07-22T15:25:26.406961+00:00 app[web.1]
: at java.lang.Thread.run(Thread.java:745)
2017-07-22T15:25:26.406961+00:00 app[web.1]
:
2017-07-22T15:25:26.405188+00:00 heroku[router]
: at=error code=H15 desc="Idle connection" method=GET path="/dashboard/PUSH?v-uiId=2&v-pushId=f96f745f-8d28-49c5-a2cb-7e63af6abdd3&X-Atmosphere-tracking-id=93b27b52-96a8-4c92-b8f4-8ce5dfed00d4&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true" host=neonplatform.herokuapp.com request_id=9cc43e82-1a84-4a83-ba6b-1085090abaf1 fwd="138.75.138.18" dyno=web.1 connect=0ms service=147919ms status=503 bytes= protocol=https
2017-07-22T15:25:27.166391+00:00 heroku[router]
: at=info method=POST path="/dashboard/HEARTBEAT/?v-uiId=2" host=neonplatform.herokuapp.com request_id=7f75ed8a-99bf-442d-b76b-235bdd00f263 fwd="138.75.138.18" dyno=web.1 connect=1ms service=2ms status=200 bytes=143 protocol=https
2017-07-22T15:25:32.129627+00:00 app[web.1]
: Jul 22, 2017 3:25:32 PM org.atmosphere.util.IOUtils guestRawServletPath
2017-07-22T15:25:32.129633+00:00 app[web.1]
: WARNING: More than one Servlet Mapping defined. WebSocket may not work org.apache.catalina.core.ApplicationServletRegistration@6a2e366c
2017-07-22T15:26:27.136613+00:00 app[web.1]
: Jul 22, 2017 3:26:27 PM org.atmosphere.container.JSR356Endpoint onError
2017-07-22T15:26:27.136620+00:00 app[web.1]
: SEVERE:
2017-07-22T15:26:27.136621+00:00 app[web.1]
: java.io.EOFException
2017-07-22T15:26:27.136622+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242)
2017-07-22T15:26:27.136623+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182)
2017-07-22T15:26:27.136624+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63)
2017-07-22T15:26:27.136624+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
2017-07-22T15:26:27.136625+00:00 app[web.1]
: at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
2017-07-22T15:26:27.136626+00:00 app[web.1]
: at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
2017-07-22T15:26:27.136626+00:00 app[web.1]
: at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2017-07-22T15:26:27.136627+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
2017-07-22T15:26:27.136628+00:00 app[web.1]
: at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2017-07-22T15:26:27.136628+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-07-22T15:26:27.136629+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-07-22T15:26:27.136629+00:00 app[web.1]
: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2017-07-22T15:26:27.136630+00:00 app[web.1]
: at java.lang.Thread.run(Thread.java:745)
2017-07-22T15:26:27.136631+00:00 app[web.1]
:
2017-07-22T15:26:27.135828+00:00 heroku[router]
: at=error code=H15 desc="Idle connection" method=GET path="/dashboard/PUSH?v-uiId=2&v-pushId=f96f745f-8d28-49c5-a2cb-7e63af6abdd3&X-Atmosphere-tracking-id=93b27b52-96a8-4c92-b8f4-8ce5dfed00d4&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true" host=neonplatform.herokuapp.com request_id=d06a6aa5-d866-42bc-8a79-507c2146780c fwd="138.75.138.18" dyno=web.1 connect=1ms service=55007ms status=503 bytes= protocol=https
2017-07-22T15:26:27.875598+00:00 heroku[router]
: at=info method=POST path="/dashboard/HEARTBEAT/?v-uiId=2" host=neonplatform.herokuapp.com request_id=a0f50fd8-157b-4918-b01c-662340d338a5 fwd="138.75.138.18" dyno=web.1 connect=1ms service=2ms status=200 bytes=143 protocol=https
2017-07-22T15:26:32.887846+00:00 app[web.1]
: Jul 22, 2017 3:26:32 PM org.atmosphere.util.IOUtils guestRawServletPath
2017-07-22T15:26:32.887863+00:00 app[web.1]
: WARNING: More than one Servlet Mapping defined. WebSocket may not work org.apache.catalina.core.ApplicationServletRegistration@398a42
2017-07-22T15:27:27.891087+00:00 heroku[router]
: at=error code=H15 desc="Idle connection" method=GET path="/dashboard/PUSH?v-uiId=2&v-pushId=f96f745f-8d28-49c5-a2cb-7e63af6abdd3&X-Atmosphere-tracking-id=93b27b52-96a8-4c92-b8f4-8ce5dfed00d4&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true" host=neonplatform.herokuapp.com request_id=85244881-913b-4620-aaa4-e64f5f377210 fwd="138.75.138.18" dyno=web.1 connect=1ms service=55006ms status=503 bytes= protocol=https
2017-07-22T15:27:27.892799+00:00 app[web.1]
: Jul 22, 2017 3:27:27 PM org.atmosphere.container.JSR356Endpoint onError
2017-07-22T15:27:27.892813+00:00 app[web.1]
: SEVERE:
2017-07-22T15:27:27.892814+00:00 app[web.1]
: java.io.EOFException
2017-07-22T15:27:27.892816+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242)
2017-07-22T15:27:27.892817+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182)
2017-07-22T15:27:27.892817+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63)
2017-07-22T15:27:27.892818+00:00 app[web.1]
: at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
2017-07-22T15:27:27.892819+00:00 app[web.1]
: at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
2017-07-22T15:27:27.892820+00:00 app[web.1]
: at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
2017-07-22T15:27:27.892821+00:00 app[web.1]
: at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2017-07-22T15:27:27.892821+00:00 app[web.1]
: at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
2017-07-22T15:27:27.892822+00:00 app[web.1]
: at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2017-07-22T15:27:27.892823+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-07-22T15:27:27.892823+00:00 app[web.1]
: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-07-22T15:27:27.892824+00:00 app[web.1]
: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2017-07-22T15:27:27.892825+00:00 app[web.1]
: at java.lang.Thread.run(Thread.java:745)
2017-07-22T15:27:27.892826+00:00 app[web.1]
:

The error happens periodically without any change from web browser. however my application seems operating normally.
I am using Vaadin 8.0.6, Java 8 and vaadin-push 8.0.6.
I am not sure for the root cause.

Thang Le

Does this look familiar David? :slight_smile:

Jul 22, 2017 10:46:30 AM org.atmosphere.container.JSR356Endpoint onError
SEVERE:
java.io.EOFException
    at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:66)
    at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
    at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2298)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

For what it’s worth, these are always (in my case) associated with a mobile device exiting the browser session. Pushing the home button on an iPhone will typically do it. But not every time. I never get these with any desktop browsers (users almost exclusively use Chrome, but have never seen it in tests with others).

I believe it is caused by the mobile browser closing without first closing its websocket session. There is never any user impact because the user is already gone. Subsequent sessions are set up without issue. The main impact is a log littered with stack traces.

V8.0.7, Tomcat 8.5.15, same in Eclipse and production environments when mobile browsers close.

yes, it is same :)).
I belive it is false error. if i test in localhost, Tomcat 9.0, then everything going smoothly. I am using both vaadin-push and other javax websocket. No issue. My log above is app hosted in heroku which is using tomcat 8.5. So just upgrade to Tomcat 9. Try to use latest libraries then it fixes problem :))

It may be the same error, but the scenarios are decidedly not the same as I’m running on Vadain 7.7.10 and it occurs with Safari on the desktop when a user clicks a “Save” button that is sending a “large” HTML set of data (over somewhere around 21KB). If we make the HTML set of data smaller, it works on Safari. It has no issues on Chrome or Firefox that we’ve seen.

It causes the user to see a “server disconnected” error message in the loading/spinner area and effectively kills the UI which will then no longer respond to subsequent button clicks (including our logoff button) and refuses to be cleared with a browser refresh (it shows the UI and then locks up again before you can do anything).

I wonder if you could experiment by turning push off at the beginning of your save operation and turning it on at the end? It looks like the server end of websocket loses sight of the client end and throws an error. Perhaps you can make it stop looking during the transfer, or determine why the transfer blocks websocket. Or is there some kind of locking/access problem? Are you pushing to the UI that’s generating the push request - one thread locking out another? None of this explains the browser-specific behaviour. But my case shares with yours the browser specific behaviour as the issue manifests in mobile browsers only.

Hi! I’m seeing the same thing here:

Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901: Aug 11, 2017 4:25:31 PM org.atmosphere.container.JSR356Endpoint onError 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901: SEVERE:  
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901: java.io.EOFException 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1244) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1184) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
Aug 11 18:25:31 6745fa5c63fd ecs-cr_td-55-c0b7bedec6a9acb0c901:     at java.lang.Thread.run(Thread.java:748) 

This happens with the application being deployed on Tomcat 8.5.20 behind an AWS Application Load Balancer. It happens every minute. I thought this was related to Tomcat closing idle connections after 60 seconds, but have now configured the heartbeat to be done every 60 seconds like so:

@VaadinServletConfiguration(ui = classOf[UserSession] , productionMode = false, resourceCacheTime = 0, heartbeatInterval = 30, closeIdleSessions = true) Unfortunately, this hasn’t helped very much. Any hint of what could be going on would be helpful.

This is a staging environment, the Vaadin version is 8.0.6 and I am the only user with the latest version of Chrome.

Thanks,

Manuel

I noticed that most likely same issue has been reported in Atmosphere GitHub

https://github.com/vaadin/framework/issues/9001

I get this, too, along with some random “broken pipe” exceptions here and there, always only on my production server.

I am usings pushes extensively through my app.

As far as I understand, the “broken pipe” ones are related to lost connections, but sometimes I’ve caught my app generating an “Unexpected error - please reload”, etc., without any user interaction and without noticing any internet connection loss on the machine.

Please excuse me if these exceptions are unrelated but I always see them close in the logs.

It seems that the issue only occurs with Tomcat embedded which runs on webapp-runner (https://github.com/jsimone/webapp-runner).

What? I’m experiencing this on Ubuntu 16.04. My Tomcat is not the one which comes with the distribution, but the one included with Pentaho, but I don’t think it’s “Tomcat ebnedded”; how can I check that? To me it looks like a “regular” Tomcat, just that it’s inside Pentaho directory, inside its own user home dir.

I’m pretty sure the stack trace follows the client browser, not the server. It happens when an iOS or Android browser is closed. It looks like the phone OSs don’t clean up Websocket sessions on the way out. Not an operational problem, but a logging nuisance.

Here is scinerio:

Assuming you are using Vaadin-Push.
When user opens a new Tab in browser (eg Firefox) and acess to server, then there is a new instance of Vaadin UI created on the server and associate with this new Tab.
Next, a new websockets connection between this UI instance and the new Tab is opened to exchange data and also doing “Keep-Alive” message.
Once user closes the Tab, websockets connection at client (Tab) is closed and thereby the websockets connection in server to be closed properly. This is normal processs as expectation.

Now, user insteads to close the browser Tab, he/she refreshes that Tab. In this case, it will create another UI instance in the server. However somehow websockets connection between the previous Tab and the previous UI instance didn’t close properly, so it cased websockets exception in server and server keeps printing this exception message until all Tabs accessing to the server are closed.

Problem here that I still don’t know why websockets connection didn’t close properly. It possiblity is routing issue on the network or issue on the Vaadin-push.