Closed
Description
Kevin McLaughlin opened SPR-13745 and commented
We're getting a lot of the exceptions below in our logs. I believe they are caused by our selenium tests not properly establishing the full connection. That said, there looks to be an issue w/ spring security integration when trying to close the "half-open" connections so the exceptions keep repeating.
Couple other things I noticed in SubProtocolWebSocketHandler.java that look questionable to me:
- lastSessionCheckTime does not seem to be updated. So, every handleMessage incurs the overhead of checkSessions(). That does not seem to be the intent of that code.
- There is some ~90 minute timer which I haven't figured out. The same session (I think) is trying to be closed every ~90 minutes.
2015-11-30 14:27:21.425 ERROR 4500 --- [http-nio-4441-exec-14] o.s.w.s.m.SubProtocolWebSocketHandler : No messages received after 60440 ms. Closing EventSourceStreamingSockJsSession[id=yvhws030].
2015-11-30 15:57:55.443 ERROR 4500 --- [http-nio-4441-exec-2] o.s.w.s.m.SubProtocolWebSocketHandler : No messages received after 60769 ms. Closing EventSourceStreamingSockJsSession[id=yvhws030].
2015-11-30 17:27:27.201 ERROR 4500 --- [http-nio-4441-exec-14] o.s.w.s.m.SubProtocolWebSocketHandler : No messages received after 60008 ms. Closing EventSourceStreamingSockJsSession[id=yvhws030].
Here is the full exception:
2015-11-30 17:49:42.421 ERROR 4500 --- [http-nio-4441-exec-5] o.s.w.s.m.SubProtocolWebSocketHandler : No messages received after 60722 ms. Closing EventSourceStreamingSockJsSession[id=3pps00e1].
2015-11-30 17:49:42.421 ERROR 4500 --- [http-nio-4441-exec-5] w.s.h.ExceptionWebSocketHandlerDecorator : Unhandled error for ExceptionWebSocketHandlerDecorator [delegate=LoggingWebSocketHandlerDecorator [delegate=SessionWebSocketHandler [delegate=SubProtocolWebSocketHandler[StompSubProtocolHandler[v10.stomp, v11.stomp, v12.stomp]]]]]
org.springframework.messaging.MessageDeliveryException: Failed to send message to ExecutorSubscribableChannel[clientInboundChannel]; nested exception is org.springframework.security.access.AccessDeniedException: Access is denied
at org.springframework.messaging.support.AbstractMessageChannel.send(AbstractMessageChannel.java:127) ~[spring-messaging-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.messaging.support.AbstractMessageChannel.send(AbstractMessageChannel.java:104) ~[spring-messaging-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.messaging.StompSubProtocolHandler.afterSessionEnded(StompSubProtocolHandler.java:595) ~[spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.clearSession(SubProtocolWebSocketHandler.java:442) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.afterConnectionClosed(SubProtocolWebSocketHandler.java:432) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(WebSocketHandlerDecorator.java:85) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(WebSocketHandlerDecorator.java:85) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(LoggingWebSocketHandlerDecorator.java:72) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.afterConnectionClosed(ExceptionWebSocketHandlerDecorator.java:92) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.close(AbstractSockJsSession.java:215) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.WebSocketSessionDecorator.close(WebSocketSessionDecorator.java:158) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.ConcurrentWebSocketSessionDecorator.close(ConcurrentWebSocketSessionDecorator.java:167) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.checkSessions(SubProtocolWebSocketHandler.java:412) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.handleMessage(SubProtocolWebSocketHandler.java:321) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.handleMessage(ExceptionWebSocketHandlerDecorator.java:72) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.delegateMessages(AbstractSockJsSession.java:385) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.sockjs.transport.session.WebSocketServerSockJsSession.handleMessage(WebSocketServerSockJsSession.java:194) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.sockjs.transport.handler.SockJsWebSocketHandler.handleTextMessage(SockJsWebSocketHandler.java:92) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:112) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:42) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:79) [spring-websocket-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:393) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:494) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:289) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:60) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:203) [tomcat-embed-websocket-8.0.28.jar!/:8.0.28]
at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.28.jar!/:8.0.28]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65]
Caused by: org.springframework.security.access.AccessDeniedException: Access is denied
at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:83) ~[spring-security-core-4.0.3.RELEASE.jar!/:4.0.3.RELEASE]
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:232) ~[spring-security-core-4.0.3.RELEASE.jar!/:4.0.3.RELEASE]
at org.springframework.security.messaging.access.intercept.ChannelSecurityInterceptor.preSend(ChannelSecurityInterceptor.java:69) ~[spring-security-messaging-4.0.3.RELEASE.jar!/:4.0.3.RELEASE]
at org.springframework.messaging.support.AbstractMessageChannel$ChannelInterceptorChain.applyPreSend(AbstractMessageChannel.java:158) ~[spring-messaging-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.messaging.support.AbstractMessageChannel.send(AbstractMessageChannel.java:113) ~[spring-messaging-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
... 40 common frames omitted
2015-11-30 17:49:52.810 INFO 4500 --- [MessageBroker-14] o.s.w.s.c.WebSocketMessageBrokerStats : WebSocketSession[51 current WS(45)-HttpStream(6)-HttpPoll(0), 5482 total, 3521 closed abnormally (3521 connect failure, 0 send limit, 1 transport error)], stompSubProtocol[processed CONNECT(215)-CONNECTED(147)-DISCONNECT(0)], stompBrokerRelay[16 sessions, localhost:61613 (available), processed CONNECT(148)-CONNECTED(148)-DISCONNECT(117)], inboundChannel[pool size = 32, active threads = 0, queued tasks = 0, completed tasks = 135534], outboundChannelpool size = 32, active threads = 0, queued tasks = 0, completed tasks = 40559], sockJsScheduler[pool size = 16, active threads = 1, queued tasks = 38, completed tasks = 44458]
Affects: 4.1.8, 4.2.3
Referenced from: commits ff8bbc9, f5e681e
Backported to: 4.1.9