From c6baf051b82deafe64affcfd4af3d242b069c04c Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 11 Jan 2023 13:44:11 -0600 Subject: [PATCH] add the error-out-on-already-errored behavior documented in design doc --- querycontext/rbf.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/querycontext/rbf.go b/querycontext/rbf.go index 4244cc478..3b3e5141f 100644 --- a/querycontext/rbf.go +++ b/querycontext/rbf.go @@ -980,9 +980,14 @@ func (rq *rbfQueryContext) Flush(index keys.Index, shard keys.Shard) error { return nil } +var errAlreadyErrored = errors.New("query context previously encountered an error") + func (rq *rbfQueryContext) Read(index keys.Index, field keys.Field, view keys.View, shard keys.Shard) (QueryRead, error) { rq.mu.Lock() defer rq.mu.Unlock() + if rq.err != nil { + return nil, errAlreadyErrored + } dbk, fk := rq.txStore.keys(index, field, view, shard) queries, ok := rq.queries[dbk] if !ok { @@ -1014,6 +1019,9 @@ func (rq *rbfQueryContext) Write(index keys.Index, field keys.Field, view keys.V } rq.mu.Lock() defer rq.mu.Unlock() + if rq.err != nil { + return nil, errAlreadyErrored + } queries, ok := rq.queries[dbk] if !ok { var err error