From a5a87820682a45e30f3276d2d0acf577118099e6 Mon Sep 17 00:00:00 2001 From: David Robison Date: Thu, 6 Jul 2017 09:24:38 -0400 Subject: [PATCH 1/4] Allow timeout on handshake handler --- .../org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java index 8b9c00ed8..ea0f4a670 100644 --- a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java +++ b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java @@ -251,7 +251,7 @@ protected void initChannel(SocketChannel ch) { while (channel == null || !channel.isOpen()) { try { channel = b.connect(host, port).sync().channel(); - handler.handshakeFuture().sync(); + if (!handler.handshakeFuture().await(this.connectionTimeout)) throw new WebSocketHandshakeException("Timeout"); } catch (InterruptedException e) { // This should never happen log.warn("{} ERROR connecting WS Netty client, opening channel", label, e); From 551c089f8a289687f57e09ba5f2479636631a230 Mon Sep 17 00:00:00 2001 From: "David R. Robison" Date: Mon, 11 Sep 2017 14:17:40 -0400 Subject: [PATCH 2/4] Set thread name in cached executor --- .../kurento/jsonrpc/internal/ws/WebSocketServerSession.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kurento-jsonrpc/kurento-jsonrpc-server/src/main/java/org/kurento/jsonrpc/internal/ws/WebSocketServerSession.java b/kurento-jsonrpc/kurento-jsonrpc-server/src/main/java/org/kurento/jsonrpc/internal/ws/WebSocketServerSession.java index 6cf0e11e2..7eb4a6d47 100644 --- a/kurento-jsonrpc/kurento-jsonrpc-server/src/main/java/org/kurento/jsonrpc/internal/ws/WebSocketServerSession.java +++ b/kurento-jsonrpc/kurento-jsonrpc-server/src/main/java/org/kurento/jsonrpc/internal/ws/WebSocketServerSession.java @@ -27,6 +27,7 @@ import org.kurento.commons.PropertiesManager; import org.kurento.commons.exception.KurentoException; +import org.kurento.commons.ThreadFactoryCreator; import org.kurento.jsonrpc.JsonRpcException; import org.kurento.jsonrpc.JsonUtils; import org.kurento.jsonrpc.TransportException; @@ -56,7 +57,8 @@ public class WebSocketServerSession extends ServerSession { private final PendingRequests pendingRequests = new PendingRequests(); - private ExecutorService execService = Executors.newCachedThreadPool(); + private ExecutorService execService = Executors.newCachedThreadPool( + ThreadFactoryCreator.create("WebSocketServerSession-async")); public WebSocketServerSession(String sessionId, Object registerInfo, SessionsManager sessionsManager, WebSocketSession wsSession) { From b60bacb0366f534acf5a534a86082796f2b4ea85 Mon Sep 17 00:00:00 2001 From: David Robison Date: Tue, 14 Nov 2017 09:14:19 -0500 Subject: [PATCH 3/4] Add timeout to sync --- .../kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java index ea0f4a670..f317704d1 100644 --- a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java +++ b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java @@ -250,7 +250,9 @@ protected void initChannel(SocketChannel ch) { final int maxRetries = 5; while (channel == null || !channel.isOpen()) { try { - channel = b.connect(host, port).sync().channel(); + ChannelFuture connectFuture = b.connect(host, port); + if (!connectFuture.await(this.connectionTimeout)) throw new WebSocketHandshakeException("Timeout"); + channel = connectFuture.channel(); if (!handler.handshakeFuture().await(this.connectionTimeout)) throw new WebSocketHandshakeException("Timeout"); } catch (InterruptedException e) { // This should never happen From d021c77295975ecb94f0bfe6b29bc7bc8093bce3 Mon Sep 17 00:00:00 2001 From: David Robison Date: Wed, 15 Nov 2017 15:18:30 -0500 Subject: [PATCH 4/4] Replace sync() with await() --- .../org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java index f317704d1..7a46ddbe7 100644 --- a/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java +++ b/kurento-jsonrpc/kurento-jsonrpc-client/src/main/java/org/kurento/jsonrpc/client/JsonRpcClientNettyWebSocket.java @@ -300,7 +300,7 @@ private void closeChannel() { if (channel != null) { log.debug("{} Closing client", label); try { - channel.close().sync(); + channel.close().await(this.connectionTimeout); } catch (Exception e) { log.debug("{} Could not properly close websocket client. Reason: {}", label, e.getMessage(), e);