Exclude read-timeout from being an error (#9429)
This commit is contained in:
parent
c6c3efdb97
commit
e4bd01e0c7
|
|
@ -93,7 +93,7 @@ func (d *Dovecot) gatherServer(addr string, acc telegraf.Accumulator, qtype stri
|
||||||
|
|
||||||
c, err := net.DialTimeout(proto, addr, defaultTimeout)
|
c, err := net.DialTimeout(proto, addr, defaultTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("enable to connect to dovecot server '%s': %s", addr, err)
|
return fmt.Errorf("unable to connect to dovecot server '%s': %s", addr, err)
|
||||||
}
|
}
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
|
||||||
|
|
@ -113,7 +113,12 @@ func (d *Dovecot) gatherServer(addr string, acc telegraf.Accumulator, qtype stri
|
||||||
}
|
}
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
if _, err := io.Copy(&buf, c); err != nil {
|
if _, err := io.Copy(&buf, c); err != nil {
|
||||||
return fmt.Errorf("copying message failed for dovecot server '%s': %s", addr, err)
|
// We need to accept the timeout here as reading from the connection will only terminate on EOF
|
||||||
|
// or on a timeout to happen. As EOF for TCP connections will only be sent on connection closing,
|
||||||
|
// the only way to get the whole message is to wait for the timeout to happen.
|
||||||
|
if nerr, ok := err.(net.Error); !ok || !nerr.Timeout() {
|
||||||
|
return fmt.Errorf("copying message failed for dovecot server '%s': %s", addr, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var host string
|
var host string
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue