apache / apache/cloudstack

consoleproxy.session.timeout is honoured for noVNC sessions but not legacy VNC/RDP/AJAX viewers

Ouverte
#13,858 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
component:console-proxy
Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
6 j 19 h
PR mergées (30 j)
32

Description

### problem

`consoleproxy.session.timeout` is now honoured for noVNC console sessions (#12810, PR #13058), but VNC/RDP/AJAX-based console viewers still rely on a separate, hardcoded idle threshold: `ConsoleProxy.VIEWER_LINGER_SECONDS` (180 seconds), used by `isFrontEndAlive()` in `ConsoleProxyVncClient`, `ConsoleProxyRdpClient`, and `ConsoleProxyNoVncClient`.

This means the effective idle timeout for a console session now depends on which viewer/hypervisor path served it:

- noVNC sessions: idle timeout follows the configured `consoleproxy.session.timeout` (both via `ConsoleProxyGCThread` and, since PR #13058, the WebSocket session's own idle timeout).
- Legacy VNC/RDP/AJAX sessions: idle timeout is still fixed at 180 seconds regardless of the `consoleproxy.session.timeout` setting.

An admin who sets `consoleproxy.session.timeout` to, say, 30 minutes to keep long-idle sessions open will still see legacy VNC/RDP/AJAX sessions get dropped after 3 minutes — an inconsistency that's confusing and undocumented.

### versions

ACS 4.20+ (any branch carrying the PR #13058 / equivalent noVNC timeout fix)

### The steps to reproduce the bug

1. Set the global setting `consoleproxy.session.timeout` to a value well above 180000 ms (e.g. 1800000 ms / 30 minutes).
2. Open a console session that uses the legacy VNC/RDP/AJAX path (e.g. a hypervisor or console mode that doesn't route through noVNC).
3. Leave the session idle.
4. Observe the session is torn down after ~180 seconds, not after the configured `consoleproxy.session.timeout`.
5. Compare against a noVNC console session under the same setting, which correctly honours the configured value.

### What to do about it?

Derive `VIEWER_LINGER_SECONDS` from the same configured `consoleproxy.session.timeout` value (`ConsoleProxy.sessionTimeoutMillis`) instead of keeping it as an independent hardcoded constant, so all console viewer types (noVNC, VNC, RDP, AJAX) honour one single, consistently-configured idle timeout.

This was flagged during review of PR #13058 (https://github.com/apache/cloudstack/pull/13058#discussion_r3309508273) but deliberately left out of that PR's scope, since it's a noVNC-focused backport and touching `isFrontEndAlive()` for the legacy viewer types is a broader behavioural change that deserves its own review/testing pass.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par lire ConsoleProxy.VIEWER_LINGER_SECONDS, ConsoleProxy.sessionTimeoutMillis et isFrontEndAlive() dans ConsoleProxyVncClient, ConsoleProxyRdpClient et ConsoleProxyNoVncClient. Reproduisez le problème avec consoleproxy.session.timeout défini à une valeur supérieure à 180000 ms, puis vérifiez que les sessions VNC legacy, RDP, AJAX et noVNC utilisent toutes le délai d’inactivité configuré plutôt qu’un seuil distinct de 180 secondes.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.