diff --git a/request.go b/request.go index f0abfe5..15e5445 100644 --- a/request.go +++ b/request.go @@ -4,6 +4,7 @@ import ( "context" "crypto/rand" "encoding/base32" + "errors" "fmt" "git.wisehodl.dev/jay/go-mana-component" "git.wisehodl.dev/jay/go-mana-prism/observer" @@ -13,6 +14,14 @@ import ( "time" ) +// ---------------------------------------------------------------------------- +// Errors +// ---------------------------------------------------------------------------- + +var ( + ErrMissedEOSE = errors.New("timeout: missed eose") +) + // ---------------------------------------------------------------------------- // Types // ---------------------------------------------------------------------------- @@ -258,13 +267,16 @@ func (m *RequestManager) Query( } return result, &cl, nil case <-ctx.Done(): - // query timed out - m.observer.Record(m.envoy.URL(), - MissedEOSE{ID: id, At: time.Now()}) - if m.logger != nil { - m.logger.Warn("missed eose", "req", id) + if ctx.Err() == context.DeadlineExceeded { + // query timed out + m.observer.Record(m.envoy.URL(), + MissedEOSE{ID: id, At: time.Now()}) + if m.logger != nil { + m.logger.Warn("missed eose", "req", id) + } + m.Cancel(id) + return result, nil, ErrMissedEOSE } - m.Cancel(id) return result, nil, nil } } diff --git a/request_test.go b/request_test.go index 2d11584..a17befb 100644 --- a/request_test.go +++ b/request_test.go @@ -558,7 +558,7 @@ func TestRequestManager_Query(t *testing.T) { start := time.Now() events, closed, err := m.Query(filters, queryTimeout) elapsed := time.Since(start) - assert.NoError(t, err) + assert.ErrorIs(t, err, ErrMissedEOSE) assert.GreaterOrEqual(t, elapsed, queryTimeout) assert.Len(t, events, 2)