Skip to content

No stack trace on SockJS HTTP transport failure to write to the response [SPR-11201] #15827

@spring-projects-issues

Description

@spring-projects-issues

Yohan Liyanage opened SPR-11201 and commented

In the latest snapshot build of 4.0, SockJS based Web Socket implementation fails to dispatch messages to subscribers randomly, when connected over Internet.

When I looked into the log file, I do not see any stack traces, but I see the following log output.

:38:51.577 [clientOutboundChannel-4] DEBUG o.s.m.simp.stomp.StompEncoder - Encoded STOMP command=MESSAGE headers={content-type=[application/json;charset=UTF-8], subscription=[sub-0], message-id=[fklmkqzi-0], destination=[/queue/synchronize]}
08:38:51.578 [clientOutboundChannel-4] TRACE o.s.w.s.s.t.s.WebSocketServerSockJsSession - Cancelling heartbeat
08:38:51.578 [clientOutboundChannel-4] TRACE o.s.w.s.s.t.s.WebSocketServerSockJsSession - Preparing to write SockJsFrame content='a["MESSAGE\ncontent-type:application/json;charset=UTF-8\nsubscription:sub-0\nmes...(truncated)'
08:38:51.581 [clientOutboundChannel-4] TRACE o.s.w.s.s.t.s.WebSocketServerSockJsSession - Write SockJsFrame content='a["MESSAGE\ncontent-type:application/json;charset=UTF-8\nsubscription:sub-0\nmes...(truncated)'
08:38:51.581 [clientOutboundChannel-4] TRACE o.s.w.s.a.j.JettyWebSocketSession - Sending TextMessage payload= a["MESSAGE.., length=439, last=true], WebSocket session id=f70433f
08:38:51.582 [clientOutboundChannel-4] WARN  o.s.w.s.s.t.s.WebSocketServerSockJsSession - Terminating connection after failure to send message: null
08:38:51.582 [clientOutboundChannel-4] DEBUG o.s.w.s.a.j.JettyWebSocketSession - Closing WebSocket session id=f70433f
08:38:51.586 [clientOutboundChannel-4] DEBUG o.s.w.s.s.t.s.WebSocketServerSockJsSession - SockJS session id=fklmkqzi was closed, CloseStatus [code=1011, reason=null]
08:38:51.586 [clientOutboundChannel-4] DEBUG o.s.w.s.h.LoggingWebSocketHandlerDecorator - Connection closed for SockJS session id=fklmkqzi, CloseStatus [code=1011, reason=null]
08:38:51.586 [clientOutboundChannel-4] TRACE o.s.m.s.ExecutorSubscribableChannel - [clientInboundChannel] sending message id=c3363e80-892a-d836-4ae2-23c2fbc91ef8
08:38:51.586 [clientInboundChannel-1] TRACE o.s.m.s.a.s.SimpAnnotationMethodMessageHandler - Ignoring message, no destination
08:38:51.586 [clientInboundChannel-1] DEBUG o.s.m.s.b.DefaultSubscriptionRegistry - Unregistering subscriptions for sessionId=fklmkqzi
08:38:51.587 [clientInboundChannel-1] TRACE o.s.m.s.u.DefaultUserDestinationResolver - Ignoring DISCONNECT message
08:38:51.587 [clientOutboundChannel-4] TRACE o.s.m.s.ChannelInterceptorChain - postSend (sent=true) message id c3363e80-892a-d836-4ae2-23c2fbc91ef8
08:38:51.587 [clientOutboundChannel-4] DEBUG o.s.m.simp.stomp.StompEncoder - Encoded STOMP command=ERROR headers={message=[Failed to write SockJsFrame content='a["MESSAGE\ncontent-type:application/json;charset=UTF-8\nsubscription:sub-0\nmes...(truncated)'; nested exception is java.nio.BufferOverflowException]}

From this, it appears that there seems to be a java.nio.BufferOverflowException. However, the stack trace is not being logged and it seems to be lost.

On the client side (Chrome), I see "WebSocket connection to 'ws://209.../' failed: Received unexpected compressed frame".

Environment Details:
Spring 4.0.0 Snapshot
Jetty 9.1.0
CentOS 6


Affects: 4.0 RC2

Referenced from: commits d0556e6

Metadata

Metadata

Assignees

Labels

in: messagingIssues in messaging modules (jms, messaging)in: webIssues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions