pub enum ProjectionRefusal {
NotADirectory {
path: PathBuf,
},
ContinuationRecordLimit {
attempted: usize,
limit: usize,
},
ContinuationUnavailable,
}Expand description
Why one projection of a read refused, while every other projection still answered.
A read fails as a whole only when no projection in it can be trusted: the request’s shape is invalid, the root is closed, or the version it pinned is not the one the index holds. A refusal is narrower. It depends on what one projection found at that version, so the lookup of a path beside a tree page that refused the same path still answers, and a caller never has to prove a path is a directory before it may batch the question.
Variants§
NotADirectory
A tree page or roll-up named a retained path that is not a directory.
A lookup of the same path answers Present, so neither three-valued answer fits:
Absent claims coverage proves the path missing, and Unknown claims coverage
cannot tell, which for a retained path never resolves. It depends on index state:
the same projection answers while the path is a directory and refuses once it has
become a file, so a path taken from an earlier page can start refusing between
reads.
ContinuationRecordLimit
A page stopped with rows left, and the record that would resume it exceeds
MAX_CONTINUATION_RECORD_BYTES.
The page is refused rather than returned without a way to continue, which would present a truncated page as a finished one. Only very long paths or a very large selection reach it. A refused continued page keeps its continuation, so the caller may retry it with a different page bound.
Fields
A Continue named a continuation this root issued but no longer retains.
An earlier page consumed it, or the root’s bound on retained continuations evicted
it to make room for newer pages. Both depend on what other pages did, not on the
request, so a token that worked a moment ago costs only its own projection. Start
the page again from its first request. A token from another opened root, or one
this root never issued, still fails the whole read with
Error::ContinuationUnavailable.