Further refine logging in StompErrorHandler
In 5.3.x and forward, completely avoid logging unsent CONNECT messages that are most likely authentication issues before the session is even established. Closes gh-26026
This commit is contained in:
@@ -269,13 +269,15 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Message<byte[]> message : messages) {
|
for (Message<byte[]> message : messages) {
|
||||||
try {
|
StompHeaderAccessor headerAccessor =
|
||||||
StompHeaderAccessor headerAccessor =
|
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
|
||||||
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
|
Assert.state(headerAccessor != null, "No StompHeaderAccessor");
|
||||||
Assert.state(headerAccessor != null, "No StompHeaderAccessor");
|
|
||||||
|
|
||||||
StompCommand command = headerAccessor.getCommand();
|
StompCommand command = headerAccessor.getCommand();
|
||||||
boolean isConnect = StompCommand.CONNECT.equals(command) || StompCommand.STOMP.equals(command);
|
boolean isConnect = StompCommand.CONNECT.equals(command) || StompCommand.STOMP.equals(command);
|
||||||
|
|
||||||
|
boolean sent = false;
|
||||||
|
try {
|
||||||
|
|
||||||
headerAccessor.setSessionId(session.getId());
|
headerAccessor.setSessionId(session.getId());
|
||||||
headerAccessor.setSessionAttributes(session.getAttributes());
|
headerAccessor.setSessionAttributes(session.getAttributes());
|
||||||
@@ -305,7 +307,7 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
SimpAttributesContextHolder.setAttributesFromMessage(message);
|
SimpAttributesContextHolder.setAttributesFromMessage(message);
|
||||||
boolean sent = outputChannel.send(message);
|
sent = outputChannel.send(message);
|
||||||
|
|
||||||
if (sent) {
|
if (sent) {
|
||||||
if (this.eventPublisher != null) {
|
if (this.eventPublisher != null) {
|
||||||
@@ -327,13 +329,14 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
if (logger.isErrorEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
String errorText = "Failed to send message to MessageChannel in session " + session.getId();
|
logger.debug("Failed to send message to MessageChannel in session " + session.getId(), ex);
|
||||||
if (logger.isDebugEnabled()) {
|
}
|
||||||
logger.debug(errorText, ex);
|
else if (logger.isErrorEnabled()) {
|
||||||
}
|
// Skip unsent CONNECT messages (likely auth issues)
|
||||||
else {
|
if (!isConnect || sent) {
|
||||||
logger.error(errorText + ":" + ex.getMessage());
|
logger.error("Failed to send message to MessageChannel in session " + session.getId() +
|
||||||
|
":" + ex.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handleError(session, ex, message);
|
handleError(session, ex, message);
|
||||||
|
|||||||
Reference in New Issue
Block a user