From 128852e9cc21065675061cfab1632236a52e42fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Mon, 7 Aug 2023 16:36:56 -0300 Subject: [PATCH 1/6] Fix websocket --- .../java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index 6434dd6e42e0..9a5db2f54fb9 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -113,7 +113,7 @@ public void run() { if (client.isVncOverWebSocketConnectionOpen()) { updateFrontEndActivityTime(); } - connectionAlive = client.isVncOverWebSocketConnectionAlive(); + connectionAlive = session.isOpen(); } else if (client.isVncOverNioSocket()) { byte[] bytesArr; int nextBytes = client.getNextBytes(); @@ -122,6 +122,8 @@ public void run() { if (nextBytes > 0) { session.getRemote().sendBytes(ByteBuffer.wrap(bytesArr)); updateFrontEndActivityTime(); + } else { + connectionAlive = session.isOpen(); } } else { b = new byte[100]; @@ -131,7 +133,6 @@ public void run() { } } } - connectionAlive = false; } catch (IOException e) { s_logger.error("Error on VNC client", e); } From f80deb7302de21d7bb58ba8e365751e2b44d43da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Thu, 10 Aug 2023 15:53:32 -0300 Subject: [PATCH 2/6] add some logs --- .../java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index 9a5db2f54fb9..e1bdd91975bd 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -119,6 +119,7 @@ public void run() { int nextBytes = client.getNextBytes(); bytesArr = new byte[nextBytes]; client.readBytes(bytesArr, nextBytes); + s_logger.trace(String.format("Read [%s] bytes from client [%s]", nextBytes, clientId)); if (nextBytes > 0) { session.getRemote().sendBytes(ByteBuffer.wrap(bytesArr)); updateFrontEndActivityTime(); @@ -128,11 +129,13 @@ public void run() { } else { b = new byte[100]; readBytes = client.read(b); + s_logger.trace(String.format("Read [%s] bytes from client [%s]", readBytes, clientId)); if (readBytes == -1 || (readBytes > 0 && !sendReadBytesToNoVNC(b, readBytes))) { connectionAlive = false; } } } + s_logger.info(String.format("Connection with client [%s] is dead.", clientId)); } catch (IOException e) { s_logger.error("Error on VNC client", e); } From 595bdfbb1e58c6e5f1909073568a826fb1441ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Mon, 14 Aug 2023 16:31:57 -0300 Subject: [PATCH 3/6] fix pokemon catch --- .../cloud/consoleproxy/ConsoleProxyNoVncClient.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index b936a8474666..e6c653970414 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.consoleproxy; +import com.cloud.utils.exception.CloudRuntimeException; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.eclipse.jetty.websocket.api.Session; @@ -114,11 +115,7 @@ public void run() { updateFrontEndActivityTime(); } connectionAlive = session.isOpen(); - try { - Thread.sleep(1); - } catch (Exception e) { - s_logger.warn("Error on sleep for vnc over websocket", e); - } + Thread.sleep(1); } else if (client.isVncOverNioSocket()) { byte[] bytesArr; int nextBytes = client.getNextBytes(); @@ -143,6 +140,10 @@ public void run() { s_logger.info(String.format("Connection with client [%s] is dead.", clientId)); } catch (IOException e) { s_logger.error("Error on VNC client", e); + } catch (InterruptedException e) { + String message = "Error on sleep for vnc over websocket"; + s_logger.error(message, e); + throw new CloudRuntimeException(message, e); } } From a0bb491e72efbfb255947e14f1763568af2b54e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Tue, 15 Aug 2023 14:26:29 -0300 Subject: [PATCH 4/6] address Wei's review --- .../java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index e6c653970414..5728abced284 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -141,9 +141,7 @@ public void run() { } catch (IOException e) { s_logger.error("Error on VNC client", e); } catch (InterruptedException e) { - String message = "Error on sleep for vnc over websocket"; - s_logger.error(message, e); - throw new CloudRuntimeException(message, e); + s_logger.error("Error on sleep for vnc over websocket", e); } } From 8b5cd4d2a5dfc6e8b8370d569107b14069ce473d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:08:29 -0300 Subject: [PATCH 5/6] remove unnecessary import --- .../java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index 5728abced284..0c0a5de32f4a 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -16,7 +16,6 @@ // under the License. package com.cloud.consoleproxy; -import com.cloud.utils.exception.CloudRuntimeException; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.eclipse.jetty.websocket.api.Session; From b7820b354a55d72e168f1764e9bfacd00053ea8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Thu, 17 Aug 2023 14:31:53 -0300 Subject: [PATCH 6/6] address wei's reviews --- .../com/cloud/consoleproxy/ConsoleProxyNoVncClient.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index 0c0a5de32f4a..27fabb53124b 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -114,7 +114,11 @@ public void run() { updateFrontEndActivityTime(); } connectionAlive = session.isOpen(); - Thread.sleep(1); + try { + Thread.sleep(1); + } catch (InterruptedException e) { + s_logger.error("Error on sleep for vnc over websocket", e); + } } else if (client.isVncOverNioSocket()) { byte[] bytesArr; int nextBytes = client.getNextBytes(); @@ -139,8 +143,6 @@ public void run() { s_logger.info(String.format("Connection with client [%s] is dead.", clientId)); } catch (IOException e) { s_logger.error("Error on VNC client", e); - } catch (InterruptedException e) { - s_logger.error("Error on sleep for vnc over websocket", e); } }