Skip to content

Commit

Permalink
do not back off on timeouts when sending reports
Browse files Browse the repository at this point in the history
...since doing so unnecessarily throttles report sending, to the point
where the app is receiving reports so infrequently that often it has
no data to show.

The timeout period itself is sufficient to prevent thrashing.

Fixes #2745.
  • Loading branch information
rade committed Jul 25, 2017
1 parent 142d8be commit a5a9180
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion probe/appclient/app_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"net/rpc"
"net/url"
Expand Down Expand Up @@ -215,7 +216,16 @@ func (c *appClient) doWithBackoff(msg string, f func() (bool, error)) {
backoff = initialBackoff
continue
}

if netErr, ok := err.(net.Error); ok && netErr.Timeout() {
// The timeout period itself serves as a backoff that
// prevents thrashing. Hence there is no need to introduce
// further delays. Moreover, any delays between publishing
// reports that exceed the app.window (defaults to 15s)
// cause the UI to display no data, which is debilitating.
log.Errorf("Error doing %s for %s: %v", msg, c.hostname, err)
backoff = initialBackoff
continue
}
log.Errorf("Error doing %s for %s, backing off %s: %v", msg, c.hostname, backoff, err)
select {
case <-time.After(backoff):
Expand Down

0 comments on commit a5a9180

Please sign in to comment.