This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new f7345e861f8 cpvm: Fix CPVM not releasing CPU after closing console
(#7826)
f7345e861f8 is described below
commit f7345e861f832dbf5576c24c21eef73d72fe5d58
Author: João Jandre <[email protected]>
AuthorDate: Fri Aug 18 06:12:06 2023 -0300
cpvm: Fix CPVM not releasing CPU after closing console (#7826)
---
.../java/com/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);
}