fix: webpool containers now stay alive 24h; recycle on session expiry

- Pool containers got IDLE_TIMEOUT=86400 instead of SESSION_IDLE_SECONDS (300s)
  to prevent them from cycling every 5 minutes while idle
- On session expiry, WEBPOOLIDX containers are now stopped so ensure_web_pool()
  recreates them fresh for the next user (prevents dirty Chromium state)
This commit is contained in:
2026-07-21 13:53:18 +00:00
parent 3eff94fbb2
commit ca5d1af2b5
2 changed files with 9 additions and 2 deletions
+8 -1
View File
@@ -23,6 +23,7 @@ from runtime import (
ensure_web_pool,
start_rdp_slot_container,
stop_runtime_container,
web_pool_container_name,
)
logger = logging.getLogger("portal")
@@ -58,10 +59,16 @@ def cleanup_loop():
rdp_slots_to_restart.append(int(cid.split(":", 1)[1]))
except Exception:
pass
elif cid.startswith("WEBPOOLIDX:"):
try:
slot = int(cid.split(":", 1)[1])
stop_runtime_container(web_pool_container_name(slot))
except Exception:
logger.exception("webpool_slot_recycle_failed cid=%s", cid)
elif cid and not (
cid.startswith("POOL:")
or cid.startswith("POOLIDX:")
or cid.startswith("WEBPOOLIDX:")
or cid.startswith("RDPSLOT:")
):
stop_runtime_container(cid)
sess.status = SessionStatus.EXPIRED