From 2c9e849bbfc4d79b767b8ae19dea45452bad5ddd Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 25 Mar 2025 11:43:41 +0100 Subject: [PATCH] remove dependency from garage_block to garage_table --- Cargo.lock | 1 - src/block/Cargo.toml | 1 - src/block/manager.rs | 12 +++++------- src/block/resync.rs | 4 +--- src/model/garage.rs | 10 ++-------- 5 files changed, 8 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6032cdf8..1c66d7f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1404,7 +1404,6 @@ dependencies = [ "garage_db", "garage_net", "garage_rpc", - "garage_table", "garage_util", "hex", "opentelemetry", diff --git a/src/block/Cargo.toml b/src/block/Cargo.toml index 1f5558c5..dc13130b 100644 --- a/src/block/Cargo.toml +++ b/src/block/Cargo.toml @@ -18,7 +18,6 @@ garage_db.workspace = true garage_net.workspace = true garage_rpc.workspace = true garage_util.workspace = true -garage_table.workspace = true opentelemetry.workspace = true diff --git a/src/block/manager.rs b/src/block/manager.rs index 41b2f02a..1b84dd5a 100644 --- a/src/block/manager.rs +++ b/src/block/manager.rs @@ -33,8 +33,6 @@ use garage_rpc::rpc_helper::OrderTag; use garage_rpc::system::System; use garage_rpc::*; -use garage_table::replication::{TableReplication, TableShardedReplication}; - use crate::block::*; use crate::layout::*; use crate::metrics::*; @@ -74,8 +72,8 @@ impl Rpc for BlockRpc { /// The block manager, handling block exchange between nodes, and block storage on local node pub struct BlockManager { - /// Replication strategy, allowing to find on which node blocks should be located - pub replication: TableShardedReplication, + /// Quorum of nodes for write operations + pub write_quorum: usize, /// Data layout pub(crate) data_layout: ArcSwap, @@ -122,7 +120,7 @@ impl BlockManager { pub fn new( db: &db::Db, config: &Config, - replication: TableShardedReplication, + write_quorum: usize, system: Arc, ) -> Result, Error> { // Load or compute layout, i.e. assignment of data blocks to the different data directories @@ -166,7 +164,7 @@ impl BlockManager { let scrub_persister = PersisterShared::new(&system.metadata_dir, "scrub_info"); let block_manager = Arc::new(Self { - replication, + write_quorum, data_layout: ArcSwap::new(Arc::new(data_layout)), data_layout_persister, data_fsync: config.data_fsync, @@ -400,7 +398,7 @@ impl BlockManager { put_block_rpc, RequestStrategy::with_priority(PRIO_NORMAL | PRIO_SECONDARY) .with_drop_on_completion(permit) - .with_quorum(self.replication.write_quorum()), + .with_quorum(self.write_quorum), ) .await?; diff --git a/src/block/resync.rs b/src/block/resync.rs index b476a0b8..6fa4cc1a 100644 --- a/src/block/resync.rs +++ b/src/block/resync.rs @@ -27,8 +27,6 @@ use garage_util::tranquilizer::Tranquilizer; use garage_rpc::system::System; use garage_rpc::*; -use garage_table::replication::TableReplication; - use crate::manager::*; // The delay between the time where a resync operation fails @@ -381,7 +379,7 @@ impl BlockResyncManager { .system .cluster_layout() .current_storage_nodes_of(hash); - if who.len() < manager.replication.write_quorum() { + if who.len() < manager.write_quorum { return Err(Error::Message("Not trying to offload block because we don't have a quorum of nodes to write to".to_string())); } who.retain(|id| *id != manager.system.id); diff --git a/src/model/garage.rs b/src/model/garage.rs index 95f7b577..a7e0b62b 100644 --- a/src/model/garage.rs +++ b/src/model/garage.rs @@ -154,13 +154,6 @@ impl Garage { info!("Initialize membership management system..."); let system = System::new(network_key, replication_factor, consistency_mode, &config)?; - let data_rep_param = TableShardedReplication { - system: system.clone(), - replication_factor: replication_factor.into(), - write_quorum: replication_factor.write_quorum(consistency_mode), - read_quorum: 1, - }; - let meta_rep_param = TableShardedReplication { system: system.clone(), replication_factor: replication_factor.into(), @@ -173,7 +166,8 @@ impl Garage { }; info!("Initialize block manager..."); - let block_manager = BlockManager::new(&db, &config, data_rep_param, system.clone())?; + let block_write_quorum = replication_factor.write_quorum(consistency_mode); + let block_manager = BlockManager::new(&db, &config, block_write_quorum, system.clone())?; block_manager.register_bg_vars(&mut bg_vars); // ---- admin tables ----