Skip to content

Commit

Permalink
Don't log connection closed exceptions as ERROR in websockets-next
Browse files Browse the repository at this point in the history
The clients can choose to close at any time, so it does not make
sense to fill up logs with closed connection messages
  • Loading branch information
geoand committed Apr 24, 2024
1 parent 20ed823 commit 62cd218
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ public void handle(Void event) {
LOG.debugf("@OnTextMessage callback consuming Multi completed: %s",
connection);
} else {
LOG.errorf(r.cause(),
"Unable to complete @OnTextMessage callback consuming Multi: %s",
logFailure(r.cause(),
"Unable to complete @OnTextMessage callback consuming Multi",
connection);
}
});
Expand All @@ -134,16 +134,16 @@ public void handle(Void event) {
LOG.debugf("@OnBinaryMessage callback consuming Multi completed: %s",
connection);
} else {
LOG.errorf(r.cause(),
"Unable to complete @OnBinaryMessage callback consuming Multi: %s",
logFailure(r.cause(),
"Unable to complete @OnBinaryMessage callback consuming Multi",
connection);
}
});
}
});
}
} else {
LOG.errorf(r.cause(), "Unable to complete @OnOpen callback: %s", connection);
logFailure(r.cause(), "Unable to complete @OnOpen callback", connection);
}
});
}
Expand All @@ -156,7 +156,7 @@ public void handle(Void event) {
if (r.succeeded()) {
LOG.debugf("@OnTextMessage callback consumed text message: %s", connection);
} else {
LOG.errorf(r.cause(), "Unable to consume text message in @OnTextMessage callback: %s",
logFailure(r.cause(), "Unable to consume text message in @OnTextMessage callback",
connection);
}
});
Expand Down Expand Up @@ -184,7 +184,7 @@ public void handle(Void event) {
if (r.succeeded()) {
LOG.debugf("@OnBinaryMessage callback consumed text message: %s", connection);
} else {
LOG.errorf(r.cause(), "Unable to consume text message in @OnBinaryMessage callback: %s",
logFailure(r.cause(), "Unable to consume binary message in @OnBinaryMessage callback",
connection);
}
});
Expand All @@ -210,8 +210,7 @@ public void handle(Void event) {
if (r.succeeded()) {
LOG.debugf("@OnPongMessage callback consumed text message: %s", connection);
} else {
LOG.errorf(r.cause(), "Unable to consume text message in @OnPongMessage callback: %s",
connection);
logFailure(r.cause(), "Unable to consume text message in @OnPongMessage callback", connection);
}
});
});
Expand All @@ -226,7 +225,7 @@ public void handle(Void event) {
if (r.succeeded()) {
LOG.debugf("@OnClose callback completed: %s", connection);
} else {
LOG.errorf(r.cause(), "Unable to complete @OnClose callback: %s", connection);
logFailure(r.cause(), "Unable to complete @OnClose callback", connection);
}
connectionManager.remove(generatedEndpointClass, connection);
});
Expand Down Expand Up @@ -254,6 +253,29 @@ public void handle(Void event) {
};
}

private static void logFailure(Throwable throwable, String message, WebSocketConnection connection) {
if (isWebSocketIsClosedFailure(throwable)) {
LOG.debugf(throwable,
message + ": %s",
connection);
} else {
LOG.errorf(throwable,
message + ": %s",
connection);
}
}

private static boolean isWebSocketIsClosedFailure(Throwable throwable) {
if (throwable == null) {
return false;
}
String message = throwable.getMessage();
if (message == null) {
return false;
}
return message.contains("WebSocket is closed");
}

private void textMessageHandler(WebSocketConnection connection, WebSocketEndpoint endpoint, ServerWebSocket ws,
Context context, Consumer<String> textAction, boolean newDuplicatedContext) {
ws.textMessageHandler(new Handler<String>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public int get() {

@Scheduled(cron = "*/1 * * * * ?", identity = "myCounter")
void increment() throws InterruptedException {
System.out.println(Thread.currentThread().getName());
Thread.sleep(100l);
counter.incrementAndGet();
}
Expand Down

0 comments on commit 62cd218

Please sign in to comment.