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