dela
dela copied to clipboard
Store API does not surface "key not found" errors
The core/store API indicates that nil should be returned when the key does not exist in the key/value store.
This is a behaviour inherited from BBolt, but it's not the most natural implementation. BBolt makes this choice assuming that errors never happen, except for a "key not found", but this assumption may not hold for other stores.
As a consequence, there are two error signals: the returned error and the value returned. This does not allow store users (smart contracts, ...) to cleanly manage the cases where a key does not exist. It would be much preferable (and more explicit) to return a sentinel error to indicate that the key was not found.
This implies updating:
- the
core/storeAPI - the
core/storeimplementations (hashtree,kv) - all contracts (within Dela and outside the Dela repository, i.e. https://github.com/dedis/d-voting, https://github.com/dedis/hbt)
- all services accessing the store directly (e.g.
core/access/darc) - others?