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;
*/
@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();