JdeRobot / JdeRobot/RoboticsApplicationManager

VNC console: port 5901 not ready within 120s after #261 (Windows, Docker, Autoparking)

Open
#277 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
11
Forks
33
Avg merge
2m
Merged PRs (30d)
1

Description

## Summary

When connecting to an exercise, RAM starts the **console** tool: the X server comes up on display `:1`, but **nothing listens on port 5901** within the **120 second** wait. `prepare_tools` then fails with `TimeoutError` in `vnc_server.wait_for_port`.

This occurs **after** the timeout change described in #261 (20s → 120s). The wait **expires at the full 120s** (see timestamps below), so the failure is not “needs slightly more than 20s”—the VNC port does not become available in that window.

## Related

- #261 — *Port 5901 gets stuck sometimes* (timeout increased to 120s; closed as completed)

## Environment

| Item | Value |
|------|--------|
| **Host OS** | Windows (build **10.0.26200**) |
| **Docker** | Docker Desktop (WSL2 backend); Docker Engine **v29.2.1** |
| **Compose / stack** | RoboticsAcademy `docker compose` with local repo mount; services `robotics-academy` → `developer-container`, `universe_db` |
| **Images** | `jderobot/robotics-academy:latest` (`developer-container`), `jderobot/robotics-database:latest` |
| **Academy (container)** | Django **4.1.7**; `http://0.0.0.0:7164/`; RAM WebSocket **7163** |
| **GPU** | No `/dev/dri` in logs; **CPU-only mode** for this run |
| **Docker resources** | CPUs: **16**; Memory: **15.27 GiB** (from `docker info`) |

## Exercise / reproduction

| Item | Value |
|------|--------|
| **Exercise** | **Autoparking** (`project_id=autoparking`) |
| **Universe** | **Autopark_line** (default after connect) |
| **World launcher** | `/opt/jderobot/Launchers/autopark_line.launch.py` (`gz`) |
| **Tools requested** | `console`, `simulator`, `web_gui` |

**Steps:**

1. `docker compose up` with the usual RoboticsAcademy compose file.
2. Open the Academy in the browser (e.g. `http://127.0.0.1:7164/`).
3. Open **Autoparking** → **Connect**.
4. Wait for tools to prepare (do not switch universe or stop while starting).

## Expected outcome

The console VNC path completes: something listens on **5901** within the wait, `prepare_tools` finishes, and the session reaches a stable tools-ready state.

## Actual outcome

`TimeoutError`: **Port 5901 on localhost didn't become available within 120 seconds.** Failure occurs during `on_prepare_tools` while starting the console VNC.

**Timing (from logs):** tools transition started at **22:02:33**; error at **22:04:35** (~**122 s** later), consistent with exhausting the **120 s** wait.

## Logs
Tools transition started developer-container | Xserver on :1 is running! developer-container | 22:04:35 [MainThread ] [ERROR] (my_app_logger) Port 5901 on localhost didn't become available within 120 seconds. developer-container | Traceback (most recent call last): developer-container | File "//RoboticsApplicationManager/robotics_application_manager/manager/manager.py", line 1052, in start
developer-container | self.process_message(message) developer-container | File "//RoboticsApplicationManager/robotics_application_manager/manager/manager.py", line 910, in process_message
developer-container | self.trigger(message.command, data=message.data or None) developer-container | File "/usr/local/lib/python3.10/dist-packages/transitions/core.py", line 922, in _get_trigger
developer-container | return event.trigger(model, *args, **kwargs) developer-container | File "/usr/local/lib/python3.10/dist-packages/transitions/core.py", line 402, in trigger
developer-container | return self.machine._process(func) developer-container | File "/usr/local/lib/python3.10/dist-packages/transitions/core.py", line 1211, in _process
developer-container | return trigger() developer-container | File "/usr/local/lib/python3.10/dist-packages/transitions/core.py", line 416, in _trigger
developer-container | self._process(event_data) developer-container | File "/usr/lo.....n_manager/manager/manager.py", line 418, in on_prepare_tools developer-container | return trigger() developer-container | File "/usr/local/lib/python3.10/dist-packages/transitions/core.py", line 416, in _trigger developer-container | self._process(event_data) developer-container | File "/usr/lo.....n_manager/manager/manager.py", line 418, in on_prepare_tools developer-container | self.tools_launcher.run(self.consumer)
developer-container | File "/RoboticsApplicationManager/robotics_application_manager/manager/launcher/launcher_tools.py", line 93, in run
developer-container | launcher = self.launch_module(tool, module, consumer) developer-container | File "/RoboticsApplicationManager/robotics_application_manager/manager/launcher/launcher_tools.py", line 123, in launch_module developer-container | launcher.run(config, process_terminated)
developer-container | File "/RoboticsApplicationManager/robotics_application_manager/manager/launcher/launcher_console.py", line 30, in run
developer-container | self.console_vnc.start_vnc( developer-container | File "/RoboticsApplicationManager/robotics_application_manager/manager/vnc/vnc_server.py", line 66, in start_vnc
developer-container | self.wait_for_port("localhost", internal_port) developer-container | File "/RoboticsApplicationManager/robotics_application_manager/manager/vnc/vnc_server.py", line 132, in wait_for_port
developer-container | raise TimeoutError( developer-container | TimeoutError: Port 5901 on localhost didn't become available within 120 seconds.

## Outcome requested

Clarify whether this is an expected limitation on **Windows + Docker Desktop (CPU-only)** versus a bug; track **post–#261** cases where **5901** still never opens within **120s** (distinct from the rare/low-power case described in #261).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.