summaryrefslogtreecommitdiff
path: root/worker_manager
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-01-20 22:38:30 +0200
committerLars Wirzenius <liw@liw.fi>2018-01-21 20:26:56 +0200
commit360e840169f38e5cb7a5afa8a4e6ddc272203eee (patch)
tree0649b885f75b78a6efb1b2894445d74986f6ab11 /worker_manager
parent9a344103edb6211ca8c16e9fa89dd6a45866308a (diff)
downloadick2-360e840169f38e5cb7a5afa8a4e6ddc272203eee.tar.gz
Fix: flush all buffers, not just first non-empty one
Diffstat (limited to 'worker_manager')
-rwxr-xr-xworker_manager13
1 files changed, 9 insertions, 4 deletions
diff --git a/worker_manager b/worker_manager
index 1cc012e..9e16d19 100755
--- a/worker_manager
+++ b/worker_manager
@@ -19,6 +19,7 @@ import base64
import json
import logging
import os
+import subprocess
import tempfile
import time
@@ -338,8 +339,7 @@ class Runner:
exit_code, _, _ = cliapp.runcmd_unchecked(
argv,
stdout_callback=self.capture_stdout,
- stderr_callback=self.capture_stderr,
- timeout_callback=self.flush,
+ stderr=subprocess.STDOUT,
**kwargs
)
self.flush()
@@ -353,18 +353,23 @@ class Runner:
return self.capture('stderr', data)
def capture(self, stream_name, data):
+ logging.debug('CAPTURE %s: %r', stream_name, data)
self._buffers[stream_name] += data.decode('UTF-8')
if len(self._buffers[stream_name]) >= self._maxbuf:
self.flush()
return None
def flush(self):
- for stream in self._buffers:
+ logging.debug('flushing: self._buffers=%r', self._buffers)
+ streams = list(self._buffers.keys())
+ logging.debug('streams: %r', streams)
+ for stream in streams:
buf = self._buffers[stream]
+ logging.debug('FLUSH: %s: %r', stream, buf)
self._buffers[stream] = ''
if buf:
logging.debug('Posting %d bytes of %s', len(buf), stream)
- return self._post(stream, buf)
+ self._post(stream, buf)
class WorkerBase: