summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pursehouse <david.pursehouse@sonymobile.com>2013-10-18 09:59:18 +0900
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2013-10-18 09:59:28 +0900
commit58210c406789d07697344d3287416581a8d9a45f (patch)
treea5d15064f021566e4e972798812c6ea422ec47de
parent626b04ef841aa887909f03ea06d4e4ced38c9164 (diff)
parent915524869e5f9a9ebe62e4c14f5030ded2042111 (diff)
downloadpygerrit-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.py20
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)