Proposal status: Implemented
Summary
Change current semantics of regatta.v1.KV/Range in a way that when no results are found the response returned will be
consistently empty RangeResponse.
Currently, when RangeRequest without range_end is sent the API responds with GRPC NOT_FOUND error.
Motivation
- The behaviour is inconsistent with other (Put/DeleteRange) APIs.
- With current design the response does not include raft header that could be eventually used by the client to determine the table leader.
- It encourages "exception driven" code in clients.
Design
- When 0 results are found in the underlying storage simple empty response (including raft header) should be returned.
NOT_FOUNDshould still be returned when the table requested does not exist. (no change)- The same behaviour should be mimicked also in
regatta.v1.KV/TxnAPI queries. (which should fix #132)
Alternatives
- No change - inconsistent API stays.
- API evolution (introducing V2 or new API method) - complexity for clients, in this early phase we could allow ourselves a leniency of a breaking change.
Unresolved Questions
N/A