Load the cluster topology. Returns None if no topology has been saved.
(&self)
| 29 | |
| 30 | /// Load the cluster topology. Returns None if no topology has been saved. |
| 31 | pub fn load_topology(&self) -> Result<Option<ClusterTopology>> { |
| 32 | let txn = self.db.begin_read().map_err(catalog_err)?; |
| 33 | let table = txn.open_table(TOPOLOGY_TABLE).map_err(catalog_err)?; |
| 34 | |
| 35 | match table.get(KEY_TOPOLOGY).map_err(catalog_err)? { |
| 36 | Some(guard) => { |
| 37 | let bytes = guard.value(); |
| 38 | let topo: ClusterTopology = |
| 39 | zerompk::from_msgpack(bytes).map_err(|e| ClusterError::Codec { |
| 40 | detail: format!("deserialize topology: {e}"), |
| 41 | })?; |
| 42 | Ok(Some(topo)) |
| 43 | } |
| 44 | None => Ok(None), |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | /// Persist the routing table. |
| 49 | pub fn save_routing(&self, routing: &RoutingTable) -> Result<()> { |