ic_query/subnet_catalog/
error.rs1use thiserror::Error as ThisError;
2
3#[derive(Debug, ThisError)]
7pub enum CatalogError {
8 #[error(transparent)]
9 Json(#[from] serde_json::Error),
10
11 #[error("unsupported subnet catalog schema version {found}; supported version is {supported}")]
12 UnsupportedSchemaVersion { found: u32, supported: u32 },
13
14 #[error("subnet catalog must contain at least one subnet")]
15 EmptySubnets,
16
17 #[error("subnet catalog must contain at least one routing range")]
18 EmptyRoutingRanges,
19
20 #[error("invalid principal in {field}: {value}: {reason}")]
21 InvalidPrincipal {
22 field: &'static str,
23 value: String,
24 reason: String,
25 },
26
27 #[error("duplicate subnet principal in catalog: {subnet_principal}")]
28 DuplicateSubnet { subnet_principal: String },
29
30 #[error("routing range references unknown subnet: {subnet_principal}")]
31 UnknownRoutingSubnet { subnet_principal: String },
32
33 #[error(
34 "invalid routing range for {subnet_principal}: start {start_canister_id} sorts after end {end_canister_id}"
35 )]
36 InvalidRoutingRange {
37 subnet_principal: String,
38 start_canister_id: String,
39 end_canister_id: String,
40 },
41
42 #[error("subnet principal {subnet_principal} was not found in the cached catalog")]
43 UnknownSubnet { subnet_principal: String },
44
45 #[error("principal prefix {prefix:?} did not match cached subnet principals")]
46 PrincipalPrefixNotFound { prefix: String },
47
48 #[error("principal prefix {prefix:?} is ambiguous; matches: {matches:?}")]
49 AmbiguousPrincipalPrefix {
50 prefix: String,
51 matches: Vec<String>,
52 },
53
54 #[error(
55 "canister principal {canister_principal} was not covered by cached routing ranges at registry_version={registry_version}, catalog_schema_version={catalog_schema_version}"
56 )]
57 RouteNotFound {
58 canister_principal: String,
59 registry_version: u64,
60 catalog_schema_version: u32,
61 },
62}