use 10 permits but skip nars bigger than 15mb

This commit is contained in:
cy 2025-04-28 02:46:11 -04:00
parent b49be95d09
commit 01443d0d99
Signed by: cy
SSH key fingerprint: SHA256:o/geVWV4om1QhUSkKvDQeW/eAihwnjyXkqMwrVdbuts

View file

@ -158,15 +158,20 @@ impl Push {
async fn upload(&'static self, mut rx: mpsc::Receiver<PathInfo>) -> Result<()> { async fn upload(&'static self, mut rx: mpsc::Receiver<PathInfo>) -> Result<()> {
let mut uploads = Vec::new(); let mut uploads = Vec::new();
let permits = Arc::new(Semaphore::new(32)); let permits = Arc::new(Semaphore::new(10));
loop { loop {
let permits = permits.clone(); let permits = permits.clone();
if let Some(path_to_upload) = rx.recv().await { if let Some(path_to_upload) = rx.recv().await {
let permit = permits.acquire_owned().await.unwrap();
uploads.push(tokio::spawn({ uploads.push(tokio::spawn({
// large uploads will be concurrently uploaded with multipart anyway so don't spawn
// too much of them
let permit = if path_to_upload.nar_size > 15 * 1024 * 1024 {
Some(permits.acquire_owned().await.unwrap())
} else {
None
};
println!( println!(
"uploading: {} (size: {})", "uploading: {} (size: {})",
path_to_upload.absolute_path(), path_to_upload.absolute_path(),