X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ff36aa7e753a28cb36bd13e3cd3bbbe4c6617265..f8067dd18b72705f3317e85745e87cffc9e25313:/services/crunchstat/crunchstat.go diff --git a/services/crunchstat/crunchstat.go b/services/crunchstat/crunchstat.go index 0cfdfa88ee..e35e98aa59 100644 --- a/services/crunchstat/crunchstat.go +++ b/services/crunchstat/crunchstat.go @@ -34,11 +34,19 @@ type Cgroup struct { cid string } -func CopyPipeToChan(in io.Reader, out chan string, done chan<- bool) { +func CopyPipeToChan(in io.ReadCloser, out chan string, done chan<- bool) { + defer in.Close() + + // TODO(twp): handle long input records gracefully, if possible + // without killing the child task (#4889) + // s := bufio.NewScanner(in) for s.Scan() { out <- s.Text() } + if s.Err() != nil { + out <- fmt.Sprintf("crunchstat: line buffering error: %s", s.Err()) + } done <- true } @@ -49,11 +57,12 @@ func CopyChanToPipe(in <-chan string, out io.Writer) { } var logChan chan string + func LogPrintf(format string, args ...interface{}) { if logChan == nil { return } - logChan <- fmt.Sprintf("crunchstat: " + format, args...) + logChan <- fmt.Sprintf("crunchstat: "+format, args...) } func ReadAllOrWarn(in *os.File) ([]byte, error) {