aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vmimpl/merger.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-12-05 13:55:23 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-12-05 20:08:06 +0100
commitd9c79f8842c6a8ed1e691a44c0e97f52f1bcb910 (patch)
tree16f30877fd2bea5f6948197e37e92387f48643d8 /vm/vmimpl/merger.go
parent1aecf4ed31b674cb1bdfe29a58028b855749c1c6 (diff)
vm/gce: always ignore serial relay errors
GCE serial reply seems to be buggy, we see lots of "serialport: VM disconnected" and "packet_write_wait: Connection to 1.2.3.4 port 9600: Broken pipe" errors, which do not have any explanation. Ignore all serial relay errors.
Diffstat (limited to 'vm/vmimpl/merger.go')
-rw-r--r--vm/vmimpl/merger.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/vm/vmimpl/merger.go b/vm/vmimpl/merger.go
index b189a40f0..2de32e53b 100644
--- a/vm/vmimpl/merger.go
+++ b/vm/vmimpl/merger.go
@@ -18,6 +18,16 @@ type OutputMerger struct {
wg sync.WaitGroup
}
+type MergerError struct {
+ Name string
+ R io.ReadCloser
+ Err error
+}
+
+func (err MergerError) Error() string {
+ return fmt.Sprintf("failed to read from %v: %v", err.Name, err.Err)
+}
+
func NewOutputMerger(tee io.Writer) *OutputMerger {
return &OutputMerger{
Output: make(chan []byte, 1000),
@@ -84,7 +94,7 @@ func (merger *OutputMerger) AddDecoder(name string, r io.ReadCloser,
}
r.Close()
select {
- case merger.Err <- fmt.Errorf("failed to read from %v: %v", name, err):
+ case merger.Err <- MergerError{name, r, err}:
default:
}
merger.wg.Done()