Skip to content

Commit

Permalink
Properly return ErrCompacted/ErrFutureRev for get/list
Browse files Browse the repository at this point in the history
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
  • Loading branch information
brandond committed Oct 27, 2023
1 parent e438216 commit 2104937
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 5 deletions.
4 changes: 0 additions & 4 deletions pkg/logstructured/logstructured.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,6 @@ func (l *LogStructured) Get(ctx context.Context, key, rangeEnd string, limit, re

func (l *LogStructured) get(ctx context.Context, key, rangeEnd string, limit, revision int64, includeDeletes bool) (int64, *server.Event, error) {
rev, events, err := l.log.List(ctx, key, rangeEnd, limit, revision, includeDeletes)
if err == server.ErrCompacted {
// ignore compacted when getting by revision
err = nil
}
if err != nil {
return 0, nil, err
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/logstructured/sqllog/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,13 +287,21 @@ func (s *SQLLog) List(ctx context.Context, prefix, startKey string, limit, revis
}

if revision > 0 && len(result) == 0 {
// a zero length result won't have the compact revision so get it manually
// a zero length result won't have the compact or current revisions so get them manually
rev, err = s.d.CurrentRevision(ctx)
if err != nil {
return 0, nil, err
}
compact, err = s.d.GetCompactRevision(ctx)
if err != nil {
return 0, nil, err
}
}

if revision > rev {
return rev, result, server.ErrFutureRev
}

if revision > 0 && revision < compact {
return rev, result, server.ErrCompacted
}
Expand Down
1 change: 1 addition & 0 deletions pkg/server/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ func (l *LimitedServer) get(ctx context.Context, r *etcdserverpb.RangeRequest) (
}
if kv != nil {
resp.Kvs = []*KeyValue{kv}
resp.Count = 1
}
return resp, nil
}
1 change: 1 addition & 0 deletions pkg/server/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var (

ErrKeyExists = rpctypes.ErrGRPCDuplicateKey
ErrCompacted = rpctypes.ErrGRPCCompacted
ErrFutureRev = rpctypes.ErrGRPCFutureRev
)

type Backend interface {
Expand Down

0 comments on commit 2104937

Please sign in to comment.