Make ValidPath (nar) hash
optional if ca
field is present
#4059
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We port the
These
data type from Haskell to C++ to maintain the invariant that we must have at least one of a CA or nar hash. This ensures that we can always validate the store entry.Additionally, we also insure that the
LocalStore
andBinaryCacheStore
always have NAR hashes, which makes this feature easier to undo without breaking data in the wild.LocalStore
andBinaryCacheStore
sound like all the "base" stores we have today, so what's the prupose? The intended use-case for this feature would be novel stores that serve data by CA, such aHashedMirrorStore
to replace the hashed mirrors mechanism, IPFS store, or software archive stores.CC @nlewo
This PR is pretty noisy. Most of it is just replacing
.field
with various accessor methods.Fix #3640