diff options
author | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-10-18 09:59:18 +0900 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-10-18 09:59:28 +0900 |
commit | 58210c406789d07697344d3287416581a8d9a45f (patch) | |
tree | a5d15064f021566e4e972798812c6ea422ec47de | |
parent | 626b04ef841aa887909f03ea06d4e4ced38c9164 (diff) | |
parent | 915524869e5f9a9ebe62e4c14f5030ded2042111 (diff) | |
download | pygerrit-58210c406789d07697344d3287416581a8d9a45f.tar.gz |
Merge branch 'master' into internal
* master:
Ensure errors in json parsing doesn't leave everything in a broken state
Avoid busy loop when receiving incoming stream data.
Change-Id: I110d42b45f07c3374c2bf8b87daf03e91d2b02e6
-rw-r--r-- | pygerrit/stream.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/pygerrit/stream.py b/pygerrit/stream.py index 37b09f1..1834d66 100644 --- a/pygerrit/stream.py +++ b/pygerrit/stream.py @@ -57,13 +57,17 @@ class GerritStream(Thread): stdout = channel.makefile() stderr = channel.makefile_stderr() while not self._stop.is_set(): - if channel.exit_status_ready(): - if channel.recv_stderr_ready(): - error = stderr.readline().strip() + try: + if channel.exit_status_ready(): + if channel.recv_stderr_ready(): + error = stderr.readline().strip() + else: + error = "Remote server connection closed" + self._error_event(error) + self._stop.set() else: - error = "Remote server connection closed" - self._error_event(error) + data = stdout.readline() + self._gerrit.put_event(data) + except Exception as e: + self._error_event(repr(e)) self._stop.set() - elif channel.recv_ready(): - data = stdout.readline() - self._gerrit.put_event(data) |