PY-91091 Debugger error on Docker Compose interpreter

Close the pre-created loopback socket BEFORE binding the new one.
For a Docker Compose target the resolved local endpoint is a wildcard address (0.0.0.0), which overlaps the still-open loopback (127.0.0.1) socket on the same port - binding the new socket first fails with "Address already in use".


Merge-request: IJ-MR-214921
Merged-by: Egor Eliseev <Egor.Eliseev@jetbrains.com>

(cherry picked from commit d3a001becd1d34b427f1b3ef0621313e156098ce)

IJ-MR-214921

GitOrigin-RevId: 864db56aecb288f33324c3405fd319093d2c4322
This commit is contained in:
Egor Eliseev
2026-08-07 20:59:08 +00:00
committed by intellij-monorepo-bot
parent 080b48dcea
commit ba9da1bcac
@@ -313,14 +313,14 @@ public class PyDebugRunner implements ProgramRunner<RunnerSettings> {
|| (hostInetAddress.isLoopbackAddress() && serverSocket.getInetAddress().isLoopbackAddress())) {
return serverSocket;
}
var newSocket = new ServerSocket(port, 0, hostInetAddress);
// Close the pre-created loopback socket BEFORE binding the new one.
try {
serverSocket.close();
}
catch (IOException e) {
LOG.warn("Failed to close the original server socket", e);
}
return newSocket;
return new ServerSocket(port, 0, hostInetAddress);
}
private static void closeServerSocket(@NotNull ServerSocket serverSocket, @NotNull Throwable cause) {