From bb181b61432ef05579b2c3a28aaae82e6cfe7e7a Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 10 Dec 2014 19:26:40 +0100 Subject: [PATCH] Use blocking read for remote debug to be able to end reading when the end process finishes (PY-14493). --- .../python/debugger/pydev/RemoteDebugger.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/python/pydevSrc/com/jetbrains/python/debugger/pydev/RemoteDebugger.java b/python/pydevSrc/com/jetbrains/python/debugger/pydev/RemoteDebugger.java index 201fbd87cb79..c0af42cc4a75 100644 --- a/python/pydevSrc/com/jetbrains/python/debugger/pydev/RemoteDebugger.java +++ b/python/pydevSrc/com/jetbrains/python/debugger/pydev/RemoteDebugger.java @@ -159,7 +159,14 @@ public class RemoteDebugger implements ProcessDebugger { } @Override - public ArrayChunk loadArrayItems(String threadId, String frameId, PyDebugValue var, int rowOffset, int colOffset, int rows, int cols, String format) throws PyDebuggerException { + public ArrayChunk loadArrayItems(String threadId, + String frameId, + PyDebugValue var, + int rowOffset, + int colOffset, + int rows, + int cols, + String format) throws PyDebuggerException { final GetArrayCommand command = new GetArrayCommand(this, threadId, frameId, var, rowOffset, colOffset, rows, cols, format); command.execute(); return command.getArray(); @@ -486,13 +493,18 @@ public class RemoteDebugger implements ProcessDebugger { protected void doRun() { try { while (true) { - boolean read = readAvailable(); + boolean read = readAvailableBlocking(); - if (isStopped) { + if (!read) { break; } + else { + if (isStopped) { + break; + } - TimeoutUtil.sleep(mySleepingPolicy.getTimeToSleep(read)); + TimeoutUtil.sleep(mySleepingPolicy.getTimeToSleep(true)); + } } } catch (Exception e) {