Skip to content

Commit db0dbce

Browse files
authored
Fix timeout errors (#256)
* Prepare release 1.2.11 * Fix timeout errors * Revert "Prepare release 1.2.11" This reverts commit e8ac02b.
1 parent 3eeebce commit db0dbce

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

pkg/googlesheets/googlesheets.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"net"
78
"strings"
89
"time"
910

@@ -117,7 +118,9 @@ func (gs *GoogleSheets) getSheetData(client client, qm *models.QueryModel) (*she
117118
return nil, nil, errWithSource
118119
}
119120

120-
if err == context.DeadlineExceeded || err == context.Canceled {
121+
// Check for all type of timeouts or context canceled that should be treated as downstream errors
122+
netErr, neErrOk := err.(net.Error)
123+
if neErrOk && netErr.Timeout() || errors.Is(err, context.DeadlineExceeded) || errors.Is(err, context.Canceled) {
121124
log.DefaultLogger.Warn("context canceled", "err", err)
122125
errWithSource := errorsource.DownstreamError(err, false)
123126
return nil, nil, errWithSource

pkg/googlesheets/googlesheets_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package googlesheets
33
import (
44
"context"
55
"encoding/json"
6+
"net"
67
"os"
78
"testing"
89
"time"
@@ -165,6 +166,27 @@ func TestGooglesheets(t *testing.T) {
165166
client.AssertExpectations(t)
166167
})
167168

169+
t.Run("timeout", func(t *testing.T) {
170+
client := &fakeClient{}
171+
qm := &models.QueryModel{
172+
Spreadsheet: "spreadsheet-id",
173+
Range: "Sheet1!A1:B2",
174+
CacheDurationSeconds: 60,
175+
}
176+
gsd := &GoogleSheets{
177+
Cache: cache.New(300*time.Second, 50*time.Second),
178+
}
179+
180+
client.On("GetSpreadsheet", qm.Spreadsheet, qm.Range, true).Return(&sheets.Spreadsheet{}, &net.OpError{Err: context.DeadlineExceeded})
181+
182+
_, _, err := gsd.getSheetData(client, qm)
183+
184+
assert.Error(t, err)
185+
assert.True(t, backend.IsDownstreamError(err))
186+
187+
client.AssertExpectations(t)
188+
})
189+
168190
t.Run("error that doesn't have message property", func(t *testing.T) {
169191
client := &fakeClient{}
170192
qm := &models.QueryModel{

0 commit comments

Comments
 (0)