From f7345e861f832dbf5576c24c21eef73d72fe5d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Fri, 18 Aug 2023 06:12:06 -0300 Subject: [PATCH] cpvm: Fix CPVM not releasing CPU after closing console (#7826) --- .../cloud/consoleproxy/ConsoleProxyNoVncClient.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 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 2dfea2251fb..27fabb53124 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,30 +113,34 @@ public class ConsoleProxyNoVncClient implements ConsoleProxyClient { if (client.isVncOverWebSocketConnectionOpen()) { updateFrontEndActivityTime(); } - connectionAlive = client.isVncOverWebSocketConnectionAlive(); + connectionAlive = session.isOpen(); try { Thread.sleep(1); - } catch (Exception e) { - s_logger.warn("Error on sleep for vnc over websocket", e); + } catch (InterruptedException e) { + s_logger.error("Error on sleep for vnc over websocket", e); } } else if (client.isVncOverNioSocket()) { byte[] bytesArr; 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(); + } else { + connectionAlive = session.isOpen(); } } 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; } } } - 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); }