From 8c1dbdf0796243180da9b76eed2b73d7a32b14fe Mon Sep 17 00:00:00 2001 From: YueGuobin Date: Sat, 30 May 2026 22:15:40 +0800 Subject: [PATCH] Fix ghost Docker nodes causing 60-second VNC timeout on variable updates When a Docker node is deleted, the compute node's DELETE endpoint only calls node.delete() which removes the working directory but does not remove the node object from the project's self._nodes collection. This causes ghost nodes to remain in memory. When project variables are updated, the code iterates through ALL nodes in memory and calls update() on them. For ghost nodes with VNC configuration, this triggers VNC startup attempts, resulting in 60-second timeouts waiting for X11 socket files that don't exist. The fix adds await node.project.remove_node(node) to ensure the node object is removed from the project's node collection when deleted, matching the behavior of other node types that use manager.delete_node() which already calls project.remove_node(). This resolves the issue where updating project variables after deleting a VNC Docker container would timeout with: 'x11 socket file "/tmp/.X11-unix/X100" does not exist' Fixes issue #2755 --- gns3server/api/routes/compute/docker_nodes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gns3server/api/routes/compute/docker_nodes.py b/gns3server/api/routes/compute/docker_nodes.py index 1d9e98530..3e30628a2 100644 --- a/gns3server/api/routes/compute/docker_nodes.py +++ b/gns3server/api/routes/compute/docker_nodes.py @@ -235,6 +235,7 @@ async def delete_docker_node(node: DockerVM = Depends(dep_node)) -> None: """ await node.delete() + await node.project.remove_node(node) @router.post(