This repository has no description
1use knot_types::{ChangeId, CobId, Oid, TypeName};
2
3#[derive(Debug, thiserror::Error)]
4pub enum PayloadError {
5 #[error("dag-cbor encode failed: {0}")]
6 Encode(String),
7 #[error("dag-cbor decode failed: {0}")]
8 Decode(String),
9}
10
11#[derive(Debug, thiserror::Error)]
12pub enum CobError {
13 #[error(transparent)]
14 Git(#[from] knot_git::GitError),
15 #[error(transparent)]
16 Payload(#[from] PayloadError),
17 #[error("object {0} does not exist")]
18 NoSuchObject(CobId),
19 #[error("object {0} tip does not descend from its root change")]
20 DetachedTip(CobId),
21 #[error("object {object} tip does not descend from indexed tip {since}")]
22 DivergedTip { object: CobId, since: ChangeId },
23 #[error("object {0} is not rooted at genesis change")]
24 RootNotGenesis(CobId),
25 #[error("object {object} contains second parentless change {stray}")]
26 MultipleRoots { object: CobId, stray: ChangeId },
27 #[error("authoritative object {object} has forked history at merge change {change}")]
28 ForkedHistory { object: CobId, change: ChangeId },
29 #[error("change {change} is not validly signed by the owning identity")]
30 UnverifiedChange { change: ChangeId },
31 #[error("concurrent write moved object {object} past expected tip {expected}")]
32 StaleTip { object: CobId, expected: ChangeId },
33 #[error("object {0} exceeded its compare-and-swap retry budget under contention")]
34 Contended(CobId),
35 #[error("change {oid} is malformed: {reason}")]
36 MalformedChange { oid: Oid, reason: String },
37 #[error("change {change} payload does not decode: {reason}")]
38 UndecodableChange { change: ChangeId, reason: String },
39 #[error("change {change} is a {found} change in {expected} object")]
40 UnexpectedChangeType {
41 change: ChangeId,
42 expected: TypeName,
43 found: TypeName,
44 },
45 #[error("produced unverifiable signature for {0} change")]
46 SelfCheck(TypeName),
47 #[error("change graph for {0} exceeds load bound")]
48 HistoryTooLong(CobId),
49 #[error("'{0}' is not usable collaborative-object ref name")]
50 RefName(String),
51 #[error("writing git object failed: {0}")]
52 Write(String),
53}