NullPointerException server push 7.7.7 with IE11/Edge

It seems that my Windows IE11 and Edge browsers are regularly reporting this exception since we updated to Vaadin 7.7.7 (we run on Tomcat 8 with Java 8).

2017-02-15 13:52:17,286 ERROR (com.esignforms.open.vaadin.EsfVaadinUI) init().VaadinSession.ErrorHandler.error()
java.lang.NullPointerException
        at com.vaadin.server.communication.ServerRpcHandler.parseServerRpcInvocation(ServerRpcHandler.java:571)
        at com.vaadin.server.communication.ServerRpcHandler.parseInvocation(ServerRpcHandler.java:534)
        at com.vaadin.server.communication.ServerRpcHandler.parseInvocations(ServerRpcHandler.java:500)
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:336)
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:273)
        at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:148)
        at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:240)
        at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:494)
        at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:87)
        at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:77)
        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 org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:571)
        at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:333)
        at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
        at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:328)
        at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:425)
        at org.atmosphere.container.JSR356Endpoint$1.onMessage(JSR356Endpoint.java:214)
        at org.atmosphere.container.JSR356Endpoint$1.onMessage(JSR356Endpoint.java:211)
        at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:399)
        at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:500)
        at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:295)
        at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:131)
        at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:71)
        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)

We don’t see it with other browser types. That is, when using Chrome and Firefox at least, no such exception occurs.

It appears related to when we have a button that opens up a popup window with downloaded content (…/APP/connector/… URL). The popup opens and shows the content as expected, but gets this exception as well.

A bit more info: The routine on our end is making use of the BrowserWindowOpener.

Also, we were able to confirm that this error doesn’t occur under 7.7.6, so it seems to have been introduced in 7.7.7 and only seems to affect IE11/Edge browsers.

First thing that pops into my mind that could be related this is this one

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

I.e. we fixed far greater problem.

@Tatu Not sure what that means as I cannot tell from that issue how it would impact things.

My code has been working since Vaadin 6, so when it breaks from 7.7.6 to 7.7.7, I think there’s something going on. There’s no such thing as a fix that causes communications errors in IE11/Edge alone unless they are known to be broken browsers that are not supported.

We don’t use much PUSH at all, but have it enabled to deal with some events that otherwise get stuck until the next user interaction. That is, we don’t queue up a bunch of stuff for PUSH specifically.

For now, we’ve reverted to 7.7.6 as a stopgap until hopefully Team Vaadin can restore so it doesn’t crash the UI on an NPE.

This issue probably has the same root cause as
#8629
, which was indeed introduced as a regression in 7.7.7. Might be advicable to stay on 7.7.6 for now.

Looks like 7.7.8 has resolved this again. At least, I’ve failed to see it reproduced and the UI doesn’t hang on Edge. Thanks!