Make chunking() able to use writing pipelines
This commit is contained in:
parent
e6d618a29e
commit
b00a6da993
@ -10,9 +10,9 @@ use std::process::{Child, Command, Stdio};
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use yama::commands::{load_pile_descriptor, open_pile};
|
use yama::commands::{load_pile_descriptor, open_pile};
|
||||||
use yama::definitions::TreeNode;
|
use yama::definitions::TreeNode;
|
||||||
use yama::pile::{Pile, RawPile};
|
use yama::pile::{Pile, RawPile, StoragePipelineSettings};
|
||||||
use yama::progress::ProgressTracker;
|
use yama::progress::ProgressTracker;
|
||||||
use yama::remote::responder::Responder;
|
use yama::remote::responder::{Responder, ResponderWritingPipeline};
|
||||||
use yama::remote::{read_message, write_message};
|
use yama::remote::{read_message, write_message};
|
||||||
use yama::utils::get_number_of_workers;
|
use yama::utils::get_number_of_workers;
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ pub fn chunking<
|
|||||||
raw_pile: Arc<RP>,
|
raw_pile: Arc<RP>,
|
||||||
parent: Option<String>,
|
parent: Option<String>,
|
||||||
progress_bar: PT,
|
progress_bar: PT,
|
||||||
|
use_writing_pipeline: bool,
|
||||||
) -> anyhow::Result<(R, W)> {
|
) -> anyhow::Result<(R, W)> {
|
||||||
info!("Chunking.");
|
info!("Chunking.");
|
||||||
write_message(&mut write, &"chunk")?;
|
write_message(&mut write, &"chunk")?;
|
||||||
@ -78,12 +79,27 @@ pub fn chunking<
|
|||||||
write_message(&mut write, &parent)?;
|
write_message(&mut write, &parent)?;
|
||||||
write.flush()?;
|
write.flush()?;
|
||||||
|
|
||||||
|
let writing_pipeline = if use_writing_pipeline {
|
||||||
|
let sps = StoragePipelineSettings {
|
||||||
|
num_compressors: get_number_of_workers("YAMA_PL_COMPRESSORS") as u32,
|
||||||
|
compressor_input_bound: 32,
|
||||||
|
writer_input_bound: 32,
|
||||||
|
};
|
||||||
|
let (control_tx, control_rx) = crossbeam_channel::unbounded();
|
||||||
|
let pipeline = raw_pile.build_storage_pipeline(sps, control_tx)?;
|
||||||
|
Some(ResponderWritingPipeline {
|
||||||
|
pipeline_submission: pipeline,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
let (r_handle, w_handle, join_handles) = Responder::start(
|
let (r_handle, w_handle, join_handles) = Responder::start(
|
||||||
read,
|
read,
|
||||||
write,
|
write,
|
||||||
get_number_of_workers("YAMA_RESPONDERS") as u16,
|
get_number_of_workers("YAMA_RESPONDERS") as u16,
|
||||||
raw_pile,
|
raw_pile,
|
||||||
None,
|
writing_pipeline,
|
||||||
progress_bar,
|
progress_bar,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -232,6 +248,7 @@ pub fn backup_remote_source_to_destination<PT: ProgressTracker + Send + 'static>
|
|||||||
raw_pile,
|
raw_pile,
|
||||||
parent,
|
parent,
|
||||||
progress_bar,
|
progress_bar,
|
||||||
|
false,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
quit(&mut read, &mut write)?;
|
quit(&mut read, &mut write)?;
|
||||||
|
@ -16,7 +16,7 @@ use crate::remote::{read_message, write_message, Request, RequestBody, Response,
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ResponderWritingPipeline {
|
pub struct ResponderWritingPipeline {
|
||||||
pipeline_submission: Sender<(ChunkId, Vec<u8>)>,
|
pub pipeline_submission: Sender<(ChunkId, Vec<u8>)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
Loading…
Reference in New Issue
Block a user