aboutsummaryrefslogtreecommitdiff
path: root/src/garage
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-11-08 14:23:08 +0100
committerAlex Auvolat <alex@adnab.me>2022-11-08 14:58:39 +0100
commitd75b37b018fc0ce8e3832c8531d9556ff7a345c9 (patch)
treebb458446bd8bc8c098beedbebbd4cbefb7359724 /src/garage
parent73a4ca8b1515f95bf7860fc292c12db83d3c6228 (diff)
downloadgarage-d75b37b018fc0ce8e3832c8531d9556ff7a345c9.tar.gz
garage-d75b37b018fc0ce8e3832c8531d9556ff7a345c9.zip
Return more info when layout's .check() fails, fix compilation, fix test
Diffstat (limited to 'src/garage')
-rw-r--r--src/garage/cli/layout.rs32
-rw-r--r--src/garage/main.rs3
2 files changed, 24 insertions, 11 deletions
diff --git a/src/garage/cli/layout.rs b/src/garage/cli/layout.rs
index 85af345a..53430e6b 100644
--- a/src/garage/cli/layout.rs
+++ b/src/garage/cli/layout.rs
@@ -330,7 +330,7 @@ pub async fn send_layout(
}
pub fn print_cluster_layout(layout: &ClusterLayout) -> bool {
- let mut table = vec!["ID\tTags\tZone\tCapacity\tUsable".to_string()];
+ let mut table = vec!["ID\tTags\tZone\tCapacity\tUsable capacity".to_string()];
for (id, _, role) in layout.roles.items().iter() {
let role = match &role.0 {
Some(r) => r,
@@ -338,16 +338,26 @@ pub fn print_cluster_layout(layout: &ClusterLayout) -> bool {
};
let tags = role.tags.join(",");
let usage = layout.get_node_usage(id).unwrap_or(0);
- let capacity = layout.get_node_capacity(id).unwrap_or(1);
- table.push(format!(
- "{:?}\t{}\t{}\t{}\t{} ({:.1}%)",
- id,
- tags,
- role.zone,
- role.capacity_string(),
- ByteSize::b(usage as u64 * layout.partition_size).to_string_as(false),
- (100.0 * usage as f32 * layout.partition_size as f32) / (capacity as f32)
- ));
+ let capacity = layout.get_node_capacity(id).unwrap_or(0);
+ if capacity > 0 {
+ table.push(format!(
+ "{:?}\t{}\t{}\t{}\t{} ({:.1}%)",
+ id,
+ tags,
+ role.zone,
+ role.capacity_string(),
+ ByteSize::b(usage as u64 * layout.partition_size).to_string_as(false),
+ (100.0 * usage as f32 * layout.partition_size as f32) / (capacity as f32)
+ ));
+ } else {
+ table.push(format!(
+ "{:?}\t{}\t{}\t{}",
+ id,
+ tags,
+ role.zone,
+ role.capacity_string(),
+ ));
+ };
}
println!();
println!("Parameters of the layout computation:");
diff --git a/src/garage/main.rs b/src/garage/main.rs
index edda734b..8e64273f 100644
--- a/src/garage/main.rs
+++ b/src/garage/main.rs
@@ -17,6 +17,9 @@ compile_error!("Either bundled-libs or system-libs Cargo feature must be enabled
#[cfg(all(feature = "bundled-libs", feature = "system-libs"))]
compile_error!("Only one of bundled-libs and system-libs Cargo features must be enabled");
+#[cfg(not(any(feature = "lmdb", feature = "sled", feature = "sqlite")))]
+compile_error!("Must activate the Cargo feature for at least one DB engine: lmdb, sled or sqlite.");
+
use std::net::SocketAddr;
use std::path::PathBuf;