forked from Deuxfleurs/garage
Small fixes
This commit is contained in:
parent
642bed601f
commit
667e4e72a8
5 changed files with 37 additions and 16 deletions
|
@ -48,7 +48,7 @@ async fn handle_delete_internal(
|
|||
key.into(),
|
||||
vec![ObjectVersion {
|
||||
uuid: version_uuid,
|
||||
timestamp: now_msec(),
|
||||
timestamp,
|
||||
state: ObjectVersionState::Complete(ObjectVersionData::DeleteMarker),
|
||||
}],
|
||||
);
|
||||
|
|
|
@ -432,13 +432,13 @@ impl AdminRpcHandler {
|
|||
writeln!(
|
||||
&mut ret,
|
||||
" number of blocks: {}",
|
||||
self.garage.block_manager.rc.len()
|
||||
self.garage.block_manager.rc_len()
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
&mut ret,
|
||||
" resync queue length: {}",
|
||||
self.garage.block_manager.resync_queue.len()
|
||||
self.garage.block_manager.resync_queue_len()
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
|
@ -460,19 +460,19 @@ impl AdminRpcHandler {
|
|||
writeln!(
|
||||
to,
|
||||
" Merkle updater todo queue length: {}",
|
||||
t.data.merkle_updater.todo.len()
|
||||
t.data.merkle_updater.todo_len()
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
to,
|
||||
" Merkle tree size: {}",
|
||||
t.data.merkle_updater.merkle_tree.len()
|
||||
t.data.merkle_updater.merkle_tree_len()
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
to,
|
||||
" GC todo queue length: {}",
|
||||
t.data.gc_todo.len()
|
||||
t.data.gc_todo_len()
|
||||
)
|
||||
.unwrap();
|
||||
Ok(())
|
||||
|
|
|
@ -27,6 +27,8 @@ use crate::garage::Garage;
|
|||
|
||||
pub const INLINE_THRESHOLD: usize = 3072;
|
||||
|
||||
pub const BACKGROUND_WORKERS: u64 = 1;
|
||||
|
||||
const BLOCK_RW_TIMEOUT: Duration = Duration::from_secs(42);
|
||||
const BLOCK_GC_TIMEOUT: Duration = Duration::from_secs(60);
|
||||
const NEED_BLOCK_QUERY_TIMEOUT: Duration = Duration::from_secs(5);
|
||||
|
@ -56,14 +58,14 @@ pub struct BlockManager {
|
|||
pub data_dir: PathBuf,
|
||||
pub data_dir_lock: Mutex<()>,
|
||||
|
||||
pub rc: sled::Tree,
|
||||
rc: sled::Tree,
|
||||
|
||||
pub resync_queue: sled::Tree,
|
||||
pub resync_notify: Notify,
|
||||
resync_queue: sled::Tree,
|
||||
resync_notify: Notify,
|
||||
|
||||
pub system: Arc<System>,
|
||||
system: Arc<System>,
|
||||
rpc_client: Arc<RpcClient<Message>>,
|
||||
pub garage: ArcSwapOption<Garage>,
|
||||
pub(crate) garage: ArcSwapOption<Garage>,
|
||||
}
|
||||
|
||||
impl BlockManager {
|
||||
|
@ -128,7 +130,7 @@ impl BlockManager {
|
|||
|
||||
pub fn spawn_background_worker(self: Arc<Self>) {
|
||||
// Launch 2 simultaneous workers for background resync loop preprocessing
|
||||
for i in 0..2u64 {
|
||||
for i in 0..BACKGROUND_WORKERS {
|
||||
let bm2 = self.clone();
|
||||
let background = self.system.background.clone();
|
||||
tokio::spawn(async move {
|
||||
|
@ -373,7 +375,6 @@ impl BlockManager {
|
|||
);
|
||||
|
||||
fs::remove_file(path).await?;
|
||||
self.resync_queue.remove(&hash)?;
|
||||
}
|
||||
|
||||
if needed && !exists {
|
||||
|
@ -494,6 +495,14 @@ impl BlockManager {
|
|||
}
|
||||
.boxed()
|
||||
}
|
||||
|
||||
pub fn resync_queue_len(&self) -> usize {
|
||||
self.resync_queue.len()
|
||||
}
|
||||
|
||||
pub fn rc_len(&self) -> usize {
|
||||
self.rc.len()
|
||||
}
|
||||
}
|
||||
|
||||
fn u64_from_be_bytes<T: AsRef<[u8]>>(bytes: T) -> u64 {
|
||||
|
|
|
@ -18,7 +18,7 @@ pub struct TableData<F: TableSchema> {
|
|||
pub instance: F,
|
||||
|
||||
pub store: sled::Tree,
|
||||
pub gc_todo: sled::Tree,
|
||||
pub(crate) gc_todo: sled::Tree,
|
||||
pub merkle_updater: Arc<MerkleUpdater>,
|
||||
}
|
||||
|
||||
|
@ -239,4 +239,8 @@ where
|
|||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub fn gc_todo_len(&self) -> usize {
|
||||
self.gc_todo.len()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,13 +40,13 @@ pub struct MerkleUpdater {
|
|||
// - key = the key of an item in the main table, ie hash(partition_key)+sort_key
|
||||
// - value = the hash of the full serialized item, if present,
|
||||
// or an empty vec if item is absent (deleted)
|
||||
pub todo: sled::Tree,
|
||||
pub(crate) todo: sled::Tree,
|
||||
pub(crate) todo_notify: Notify,
|
||||
|
||||
// Content of the merkle tree: items where
|
||||
// - key = .bytes() for MerkleNodeKey
|
||||
// - value = serialization of a MerkleNode, assumed to be MerkleNode::empty if not found
|
||||
pub merkle_tree: sled::Tree,
|
||||
pub(crate) merkle_tree: sled::Tree,
|
||||
empty_node_hash: Hash,
|
||||
}
|
||||
|
||||
|
@ -311,6 +311,14 @@ impl MerkleUpdater {
|
|||
Some(v) => Ok(rmp_serde::decode::from_read_ref::<_, MerkleNode>(&v[..])?),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn merkle_tree_len(&self) -> usize {
|
||||
self.merkle_tree.len()
|
||||
}
|
||||
|
||||
pub fn todo_len(&self) -> usize {
|
||||
self.todo.len()
|
||||
}
|
||||
}
|
||||
|
||||
impl MerkleNodeKey {
|
||||
|
|
Loading…
Reference in a new issue