query: return 'missed eose' error explicitly.

This commit is contained in:
Jay
2026-08-06 09:51:08 -04:00
parent b0e0561f0a
commit 70c47d7421
2 changed files with 19 additions and 7 deletions
+12
View File
@@ -4,6 +4,7 @@ import (
"context" "context"
"crypto/rand" "crypto/rand"
"encoding/base32" "encoding/base32"
"errors"
"fmt" "fmt"
"git.wisehodl.dev/jay/go-mana-component" "git.wisehodl.dev/jay/go-mana-component"
"git.wisehodl.dev/jay/go-mana-prism/observer" "git.wisehodl.dev/jay/go-mana-prism/observer"
@@ -13,6 +14,14 @@ import (
"time" "time"
) )
// ----------------------------------------------------------------------------
// Errors
// ----------------------------------------------------------------------------
var (
ErrMissedEOSE = errors.New("timeout: missed eose")
)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Types // Types
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -258,6 +267,7 @@ func (m *RequestManager) Query(
} }
return result, &cl, nil return result, &cl, nil
case <-ctx.Done(): case <-ctx.Done():
if ctx.Err() == context.DeadlineExceeded {
// query timed out // query timed out
m.observer.Record(m.envoy.URL(), m.observer.Record(m.envoy.URL(),
MissedEOSE{ID: id, At: time.Now()}) MissedEOSE{ID: id, At: time.Now()})
@@ -265,6 +275,8 @@ func (m *RequestManager) Query(
m.logger.Warn("missed eose", "req", id) m.logger.Warn("missed eose", "req", id)
} }
m.Cancel(id) m.Cancel(id)
return result, nil, ErrMissedEOSE
}
return result, nil, nil return result, nil, nil
} }
} }
+1 -1
View File
@@ -558,7 +558,7 @@ func TestRequestManager_Query(t *testing.T) {
start := time.Now() start := time.Now()
events, closed, err := m.Query(filters, queryTimeout) events, closed, err := m.Query(filters, queryTimeout)
elapsed := time.Since(start) elapsed := time.Since(start)
assert.NoError(t, err) assert.ErrorIs(t, err, ErrMissedEOSE)
assert.GreaterOrEqual(t, elapsed, queryTimeout) assert.GreaterOrEqual(t, elapsed, queryTimeout)
assert.Len(t, events, 2) assert.Len(t, events, 2)