aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-05-29 14:33:50 +0200
committerGitHub <noreply@github.com>2017-05-29 14:33:50 +0200
commitbaf825803c72cdc02bed92a5f84ec43482aa35d3 (patch)
treec9594f9450bb91ce03a5f671f53755c193077ef3 /vm
parent145e067777cb0d21644412548e67dcb934f1da5e (diff)
parenteaf1f711fc42235d0b9a73c6877d14b1b5244194 (diff)
Merge pull request #196 from dvyukov/executor-fault-inject3
fault injection and faster tests
Diffstat (limited to 'vm')
-rw-r--r--vm/merger.go5
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: