dela icon indicating copy to clipboard operation
dela copied to clipboard

Store API does not surface "key not found" errors

Open pierluca opened this issue 2 years ago • 0 comments

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/store API
  • the core/store implementations (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?

pierluca avatar Aug 14 '23 15:08 pierluca