nix_utils::BaseStore: return Result from all fallible methods #1753
Merged
Conversation
Previously the trait implementations silently swallowed FFI errors as "path not found" / empty / zero. This was dubious and could cause mysterious failures. For example, a daemon connection error would look like "path is present" to callers, causing paths to be skipped from import and builds to fail with cryptic errors instead. We don't want that! Better to have an earlier clear failure. The C++ `query_path_info` now checks `isValidPath` first and returns a `found: false` sentinel instead of throwing `InvalidPath` — eliminating brittle error-message string matching on the Rust side. All callers updated to propagate errors with `?`.
Member
|
21 minutes, John |
Member
Author
|
Would you like to review this one? I considered it pretty straight-forward. I also talking about a little bit with @Mic92 over the weekend (though as part of a larger conversation) about it. #1748 This is the more interesting one that I would much prefer eyes on, if you have limited time. (I will push to it again in a moment.) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Previously the trait implementations silently swallowed FFI errors as
"path not found" / empty / zero. This was dubious and could cause
mysterious failures. For example, a daemon connection error would look
like "path is present" to callers, causing paths to be skipped from
import and builds to fail with cryptic errors instead. We don't want
that! Better to have an earlier clear failure.
The C++
query_path_infonow checksisValidPathfirst and returnsa
found: falsesentinel instead of throwingInvalidPath—eliminating brittle error-message string matching on the Rust side.
All callers updated to propagate errors with
?.