Reduce verbosity of websocket timeout logging 58/104658/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 1 Mar 2023 12:55:56 +0000 (13:55 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 1 Mar 2023 13:01:01 +0000 (14:01 +0100)
A websocket timing out is not a big thing, do not log a complete stack
trace when it occurs.

JIRA: NETCONF-970
Change-Id: I04ec6da1957ba13a27561dfbff9c06a10f011083
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/WebSocketSessionHandler.java

index a798746ac88f866d253c43ce74336c2d64ebbf11..275834373a55cc288c0d76ac3ef080bc8f5e5583 100644 (file)
@@ -19,6 +19,8 @@ import java.util.Optional;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import org.eclipse.jetty.websocket.api.CloseException;
 import org.eclipse.jetty.websocket.api.RemoteEndpoint;
 import org.eclipse.jetty.websocket.api.Session;
 import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
@@ -122,9 +124,14 @@ public final class WebSocketSessionHandler implements StreamSessionHandler {
      */
     @OnWebSocketError
     public synchronized void onWebSocketError(final Throwable error) {
-        LOG.warn("An error occurred on web-socket: ", error);
+        if (error instanceof CloseException && error.getCause() instanceof TimeoutException timeout) {
+            // A timeout is expected, do not log the complete stack trace
+            LOG.info("Web-socket closed by timeout: {}", timeout.getMessage());
+        } else {
+            LOG.warn("An error occurred on web-socket: ", error);
+        }
         if (session != null) {
-            LOG.warn("Trying to close web-socket session {} gracefully after error.", session);
+            LOG.info("Trying to close web-socket session {} gracefully after error.", session);
             listener.removeSubscriber(this);
             if (session.isOpen()) {
                 session.close();