Fine-tuned logging of WebSocket close exceptions
Issue: SPR-16409
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2015 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -119,8 +119,8 @@ public class JettyWebSocketHandlerAdapter {
|
|||||||
this.webSocketHandler.afterConnectionClosed(this.wsSession, closeStatus);
|
this.webSocketHandler.afterConnectionClosed(this.wsSession, closeStatus);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.error("Unhandled error for " + this.wsSession, ex);
|
logger.warn("Unhandled exception after connection closed for " + this, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2015 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -141,8 +141,8 @@ public class StandardWebSocketHandlerAdapter extends Endpoint {
|
|||||||
this.handler.afterConnectionClosed(this.wsSession, closeStatus);
|
this.handler.afterConnectionClosed(this.wsSession, closeStatus);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.error("Unhandled error for " + this.wsSession, ex);
|
logger.warn("Unhandled on-close exception for " + this.wsSession, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -78,8 +78,8 @@ public class ExceptionWebSocketHandlerDecorator extends WebSocketHandlerDecorato
|
|||||||
getDelegate().afterConnectionClosed(session, closeStatus);
|
getDelegate().afterConnectionClosed(session, closeStatus);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.error("Unhandled error for " + this, ex);
|
logger.warn("Unhandled exception after connection closed for " + this, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -60,6 +60,7 @@ import org.springframework.web.socket.sockjs.transport.session.StreamingSockJsSe
|
|||||||
* sub-protocol handler to send messages from the application back to the client.
|
* sub-protocol handler to send messages from the application back to the client.
|
||||||
*
|
*
|
||||||
* @author Rossen Stoyanchev
|
* @author Rossen Stoyanchev
|
||||||
|
* @author Juergen Hoeller
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
* @author Artem Bilan
|
* @author Artem Bilan
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
@@ -152,8 +153,8 @@ public class SubProtocolWebSocketHandler
|
|||||||
for (String protocol : protocols) {
|
for (String protocol : protocols) {
|
||||||
SubProtocolHandler replaced = this.protocolHandlerLookup.put(protocol, handler);
|
SubProtocolHandler replaced = this.protocolHandlerLookup.put(protocol, handler);
|
||||||
if (replaced != null && replaced != handler) {
|
if (replaced != null && replaced != handler) {
|
||||||
throw new IllegalStateException("Can't map " + handler +
|
throw new IllegalStateException("Cannot map " + handler +
|
||||||
" to protocol '" + protocol + "'. Already mapped to " + replaced + ".");
|
" to protocol '" + protocol + "': already mapped to " + replaced + ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.protocolHandlers.add(handler);
|
this.protocolHandlers.add(handler);
|
||||||
@@ -260,8 +261,8 @@ public class SubProtocolWebSocketHandler
|
|||||||
holder.getSession().close(CloseStatus.GOING_AWAY);
|
holder.getSession().close(CloseStatus.GOING_AWAY);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.error("Failed to close '" + holder.getSession() + "': " + ex);
|
logger.warn("Failed to close '" + holder.getSession() + "': " + ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -321,7 +322,7 @@ public class SubProtocolWebSocketHandler
|
|||||||
String sessionId = resolveSessionId(message);
|
String sessionId = resolveSessionId(message);
|
||||||
if (sessionId == null) {
|
if (sessionId == null) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isErrorEnabled()) {
|
||||||
logger.error("Couldn't find session id in " + message);
|
logger.error("Could not find session id in " + message);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -400,8 +401,8 @@ public class SubProtocolWebSocketHandler
|
|||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
// Shouldn't happen
|
// Shouldn't happen
|
||||||
logger.error("Failed to obtain session.getAcceptedProtocol(). " +
|
logger.error("Failed to obtain session.getAcceptedProtocol(): " +
|
||||||
"Will use the default protocol handler (if configured).", ex);
|
"will use the default protocol handler (if configured).", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
SubProtocolHandler handler;
|
SubProtocolHandler handler;
|
||||||
@@ -469,8 +470,8 @@ public class SubProtocolWebSocketHandler
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
WebSocketSession session = holder.getSession();
|
WebSocketSession session = holder.getSession();
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isInfoEnabled()) {
|
||||||
logger.error("No messages received after " + timeSinceCreated + " ms. " +
|
logger.info("No messages received after " + timeSinceCreated + " ms. " +
|
||||||
"Closing " + holder.getSession() + ".");
|
"Closing " + holder.getSession() + ".");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -478,8 +479,8 @@ public class SubProtocolWebSocketHandler
|
|||||||
session.close(CloseStatus.SESSION_NOT_RELIABLE);
|
session.close(CloseStatus.SESSION_NOT_RELIABLE);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.error("Failure while closing " + session, ex);
|
logger.warn("Failed to close unreliable " + session, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user