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) {
|
||||
try {
|
||||
StompHeaderAccessor headerAccessor =
|
||||
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
|
||||
Assert.state(headerAccessor != null, "No StompHeaderAccessor");
|
||||
StompHeaderAccessor headerAccessor =
|
||||
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
|
||||
Assert.state(headerAccessor != null, "No StompHeaderAccessor");
|
||||
|
||||
StompCommand command = headerAccessor.getCommand();
|
||||
boolean isConnect = StompCommand.CONNECT.equals(command) || StompCommand.STOMP.equals(command);
|
||||
StompCommand command = headerAccessor.getCommand();
|
||||
boolean isConnect = StompCommand.CONNECT.equals(command) || StompCommand.STOMP.equals(command);
|
||||
|
||||
boolean sent = false;
|
||||
try {
|
||||
|
||||
headerAccessor.setSessionId(session.getId());
|
||||
headerAccessor.setSessionAttributes(session.getAttributes());
|
||||
@@ -305,7 +307,7 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
||||
|
||||
try {
|
||||
SimpAttributesContextHolder.setAttributesFromMessage(message);
|
||||
boolean sent = outputChannel.send(message);
|
||||
sent = outputChannel.send(message);
|
||||
|
||||
if (sent) {
|
||||
if (this.eventPublisher != null) {
|
||||
@@ -327,13 +329,14 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
||||
}
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
if (logger.isErrorEnabled()) {
|
||||
String errorText = "Failed to send message to MessageChannel in session " + session.getId();
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(errorText, ex);
|
||||
}
|
||||
else {
|
||||
logger.error(errorText + ":" + ex.getMessage());
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Failed to send message to MessageChannel in session " + session.getId(), ex);
|
||||
}
|
||||
else if (logger.isErrorEnabled()) {
|
||||
// Skip unsent CONNECT messages (likely auth issues)
|
||||
if (!isConnect || sent) {
|
||||
logger.error("Failed to send message to MessageChannel in session " + session.getId() +
|
||||
":" + ex.getMessage());
|
||||
}
|
||||
}
|
||||
handleError(session, ex, message);
|
||||
|
||||
Reference in New Issue
Block a user