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
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:
docker compose up with the usual RoboticsAcademy compose file.
- Open the Academy in the browser (e.g.
http://127.0.0.1:7164/).
- Open Autoparking → Connect.
- 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).
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_toolsthen fails withTimeoutErrorinvnc_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
Environment
docker composewith local repo mount; servicesrobotics-academy→developer-container,universe_dbjderobot/robotics-academy:latest(developer-container),jderobot/robotics-database:latesthttp://0.0.0.0:7164/; RAM WebSocket 7163/dev/driin logs; CPU-only mode for this rundocker info)Exercise / reproduction
project_id=autoparking)/opt/jderobot/Launchers/autopark_line.launch.py(gz)console,simulator,web_guiSteps:
docker compose upwith the usual RoboticsAcademy compose file.http://127.0.0.1:7164/).Expected outcome
The console VNC path completes: something listens on 5901 within the wait,
prepare_toolsfinishes, 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 duringon_prepare_toolswhile 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).