diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-05-29 14:33:50 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-29 14:33:50 +0200 |
| commit | baf825803c72cdc02bed92a5f84ec43482aa35d3 (patch) | |
| tree | c9594f9450bb91ce03a5f671f53755c193077ef3 /vm | |
| parent | 145e067777cb0d21644412548e67dcb934f1da5e (diff) | |
| parent | eaf1f711fc42235d0b9a73c6877d14b1b5244194 (diff) | |
Merge pull request #196 from dvyukov/executor-fault-inject3
fault injection and faster tests
Diffstat (limited to 'vm')
| -rw-r--r-- | vm/merger.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/vm/merger.go b/vm/merger.go index c3b5c16d0..2902eda6c 100644 --- a/vm/merger.go +++ b/vm/merger.go @@ -13,6 +13,7 @@ import ( type OutputMerger struct { Output chan []byte Err chan error + teeMu sync.Mutex tee io.Writer wg sync.WaitGroup } @@ -42,7 +43,9 @@ func (merger *OutputMerger) Add(name string, r io.ReadCloser) { if pos := bytes.LastIndexByte(pending, '\n'); pos != -1 { out := pending[:pos+1] if merger.tee != nil { + merger.teeMu.Lock() merger.tee.Write(out) + merger.teeMu.Unlock() } select { case merger.Output <- append([]byte{}, out...): @@ -56,7 +59,9 @@ func (merger *OutputMerger) Add(name string, r io.ReadCloser) { if len(pending) != 0 { pending = append(pending, '\n') if merger.tee != nil { + merger.teeMu.Lock() merger.tee.Write(pending) + merger.teeMu.Unlock() } select { case merger.Output <- pending: |
