Bug Description
This is returning in a lot of error logs for us but no actual production issues. It just makes looking at logs scarier than it should be.
GraphQlWebSocketHandler throws IllegalArgumentException: No SessionInfo for StandardWebSocketSession[...] when Tomcat delivers a text message concurrently with (or immediately after) the WebSocket session close. The exception is thrown from getSessionInfo() which uses Assert.notNull on the result of sessionInfoMap.get(session.getId()).
Stack Trace
java.lang.IllegalArgumentException: No SessionInfo for StandardWebSocketSession[id=9be09e8e-413f-d21c-8fa9-27fe80637acf, uri=wss://gql.opensea.io/subscriptions]
at org.springframework.util.Assert.notNull(Assert.java:182)
at org.springframework.graphql.server.webmvc.GraphQlWebSocketHandler.getSessionInfo(GraphQlWebSocketHandler.java:298)
at org.springframework.graphql.server.webmvc.GraphQlWebSocketHandler.handleInternal(GraphQlWebSocketHandler.java:204)
at org.springframework.graphql.server.webmvc.GraphQlWebSocketHandler.handleTextMessage(GraphQlWebSocketHandler.java:196)
at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43)
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75)
at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56)
at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.handleMessage(ExceptionWebSocketHandlerDecorator.java:58)
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:113)
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:392)
at org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:130)
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:486)
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:286)
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:129)
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:85)
at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:184)
at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:164)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:152)
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57)
at java.base/java.lang.Thread.run(Thread.java:1474)
Environment
- spring-graphql: 2.0.0
- netflix dgs 11.1.0
- JDK: 25
Bug Description
This is returning in a lot of error logs for us but no actual production issues. It just makes looking at logs scarier than it should be.
GraphQlWebSocketHandlerthrowsIllegalArgumentException: No SessionInfo for StandardWebSocketSession[...]when Tomcat delivers a text message concurrently with (or immediately after) the WebSocket session close. The exception is thrown fromgetSessionInfo()which usesAssert.notNullon the result ofsessionInfoMap.get(session.getId()).Stack Trace
Environment