Framework: Elemental JSON on server-side exception

Created on 27 Apr 2015  Â·  12Comments  Â·  Source: vaadin/framework

Originally by @macprzepiora


Hard to tell what caused an exception

elemental.json.JsonException: Invalid number literal: 666|
at elemental.json.impl.JsonTokenizer.getNumberForLiteral(JsonTokenizer.java:284)
at elemental.json.impl.JsonTokenizer.getValueForLiteral(JsonTokenizer.java:307)
at elemental.json.impl.JsonTokenizer.nextValue(JsonTokenizer.java:175)
at elemental.json.impl.JreJsonFactory.parse(JreJsonFactory.java:64)
at elemental.json.impl.JsonUtil.parse(JsonUtil.java:200)
at com.vaadin.server.communication.ServerRpcHandler$RpcRequest.(ServerRpcHandler.java:81)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:176)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:147)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:226)
at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:486)
at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:88)
at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:78)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104)
at org.atmosphere.container.JettyWebSocketUtil.doService(JettyWebSocketUtil.java:70)
at org.atmosphere.container.JettyServlet30AsyncSupportWithWebSocket.service(JettyServlet30AsyncSupportWithWebSocket.java:52)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570)
at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:332)
at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:327)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:424)
at org.atmosphere.container.JettyWebSocketHandler.onMessage(JettyWebSocketHandler.java:97)
at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameHandler.onFrame(WebSocketConnectionRFC6455.java:835)
at org.eclipse.jetty.websocket.WebSocketParserRFC6455.parseNext(WebSocketParserRFC6455.java:349)
at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:225)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)


Imported from https://dev.vaadin.com/ issue #17656

question

All 12 comments

Originally by @macprzepiora


Attachment added: project.zip (15.6 KiB)

Originally by @macprzepiora


Please try the added project, open ADesign.html and add a component to it – usually it triggers the exception

Originally by _bogdanudrescu_


It's enough for me to open that design and I get lots of these:

java.lang.NullPointerException
    at com.vaadin.designer.eclipse.internal.ComponentHierarchyUtils.isDesign(ComponentHierarchyUtils.java:78)
    at com.vaadin.designer.eclipse.views.utils.ViewUtil.getComponentIcon(ViewUtil.java:107)
    at com.vaadin.designer.eclipse.views.HierarchyOutlineView$HierarchyOutlineLabelProvider.getColumnImage(HierarchyOutlineView.java:887)
    at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:67)
    at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:154)
    at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:949)
    at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:114)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
...

https://dev.vaadin.com/review/#/c/10993/

Originally by _bogdanudrescu_


I can't reproduce the initial problem.

Originally by @johndevs


Cannot reproduce this with latest master branch. Please re-open if you still get this.

Originally by _g-land_


happened when using push with version 7.5.3:

elemental.json.JsonException: Invalid number literal: 222|
at elemental.json.impl.JsonTokenizer.getNumberForLiteral(JsonTokenizer.java:284)
at elemental.json.impl.JsonTokenizer.getValueForLiteral(JsonTokenizer.java:307)
at elemental.json.impl.JsonTokenizer.nextValue(JsonTokenizer.java:175)
at elemental.json.impl.JreJsonFactory.parse(JreJsonFactory.java:64)
at elemental.json.impl.JsonUtil.parse(JsonUtil.java:200)
at com.vaadin.server.communication.ServerRpcHandler$RpcRequest.(ServerRpcHandler.java:82)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:194)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:153)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:232)
at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:492)
at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:88)
at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:78)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:107)
at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:154)
at org.atmosphere.container.Tomcat7Servlet30SupportWithWebSocket.service(Tomcat7Servlet30SupportWithWebSocket.java:62)
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.websocket.DefaultWebSocketProcessor.dispatchReader(DefaultWebSocketProcessor.java:795)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:527)
at org.atmosphere.container.TomcatWebSocketHandler.onTextData(TomcatWebSocketHandler.java:104)
at org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:129)
at org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:83)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:563)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1620)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

Originally by _g-land_


happened when using push with version 7.5.3:

elemental.json.JsonException: Invalid number literal: 222|
at elemental.json.impl.JsonTokenizer.getNumberForLiteral(JsonTokenizer.java:284)
at elemental.json.impl.JsonTokenizer.getValueForLiteral(JsonTokenizer.java:307)
at elemental.json.impl.JsonTokenizer.nextValue(JsonTokenizer.java:175)
at elemental.json.impl.JreJsonFactory.parse(JreJsonFactory.java:64)
at elemental.json.impl.JsonUtil.parse(JsonUtil.java:200)
at com.vaadin.server.communication.ServerRpcHandler$RpcRequest.(ServerRpcHandler.java:82)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:194)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:153)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:232)
at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:492)
at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:88)
at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:78)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:107)
at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:154)
at org.atmosphere.container.Tomcat7Servlet30SupportWithWebSocket.service(Tomcat7Servlet30SupportWithWebSocket.java:62)
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.websocket.DefaultWebSocketProcessor.dispatchReader(DefaultWebSocketProcessor.java:795)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:527)
at org.atmosphere.container.TomcatWebSocketHandler.onTextData(TomcatWebSocketHandler.java:104)
at org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:129)
at org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:83)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:563)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1620)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

A lot of tickets have been left hanging in the issue tracker through the years. Some of them are still relevant, some of them have been fixed a long time ago and some are no longer valid. To get a better look on what is important and still relevant, we are closing old tickets which have not been touched in a long time. No further work will be done on this ticket. If the ticket seems to be still actual, please verify the problem existence over latest framework version and then open a new ticket in vaadin/framework with all the suitable information.

I have also seen this issue occur in Vaadin 8.2.1.

It seems to happen when a Thread calls the _receiveMessage_ method in AtmospherePushConnection.java before having called the connect method.

This means the resource is null and the start of the json payload doesn't get stripped off by the rest of the _recieveMessage_ logic, leading to the

Invalid Number literal

error mentioned earlier.

Tracing this back, it appears to mean the POST branch is executed before the GET branch in the below code snippet from PushAtmosphereHandler.java:

  if (req.getMethod().equalsIgnoreCase("GET")) {
            onConnect(resource);
        } else if (req.getMethod().equalsIgnoreCase("POST")) {
            onMessage(resource);
        }

Hello there!

We are sorry that this issue hasn't progressed lately. We are prioritizing issues by severity and the number of customers we expect are experiencing this and haven't gotten around to fix this issue yet.

There are a couple of things you could help to get things rolling on this issue (this is an automated message, so expect that some of these are already in use):

  • Check if the issue is still valid for the latest version. There are dozens of duplicates in our issue tracker, so it is possible that the issue is already tackled. If it appears to be fixed, close the issue, otherwise report to the issue that it is still valid.
  • Provide more details how to reproduce the issue.
  • Explain why it is important to get this issue fixed and politely draw others attention to it e.g. via the forum or social media.
  • Add a reduced test case about the issue, so it is easier for somebody to start working on a solution.
  • Try fixing the issue yourself and create a pull request that contains the test case and/or a fix for it. Handling the pull requests is the top priority for the core team.
  • If the issue is clearly a bug, use the Warranty in your Vaadin subscription to raise its priority.

Thanks again for your contributions! Even though we haven't been able to get this issue fixed, we hope you to report your findings and enhancement ideas in the future too!

This error occurs continuously at every session in Vaadin 8 with Push enabled.

The most likely cause for this exception is that widgetset and server are not the same version. Hence it may happen, that some data to be exchanged has been changed by structure. Server side expects the json to contain a numeric value and there is conversion error, since client has sent non-number. Re-compiling the widgetset should fix the issue.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Artur- picture Artur-  Â·  6Comments

edler-san picture edler-san  Â·  5Comments

sarahfuchs picture sarahfuchs  Â·  6Comments

jbreitung picture jbreitung  Â·  6Comments

tomislavi picture tomislavi  Â·  6Comments