From f65b2c91811d86e17ff757fb55de4bdf3d774280 Mon Sep 17 00:00:00 2001 From: Alexander Weiss Date: Sun, 10 Jul 2022 22:23:30 +0200 Subject: [PATCH] optimize packer --- src/blob/packer.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/blob/packer.rs b/src/blob/packer.rs index 90850a6..8ff7fb6 100644 --- a/src/blob/packer.rs +++ b/src/blob/packer.rs @@ -215,12 +215,8 @@ impl Packer { self.index.set_id(id); // write file to backend - self.file.flush()?; - self.file.seek(SeekFrom::Start(0))?; - let index = std::mem::take(&mut self.index); let file = std::mem::replace(&mut self.file, tempfile()?); - self.file_writer.add(index, file, id).await?; Ok(()) @@ -239,21 +235,21 @@ struct FileWriter { } impl FileWriter { - async fn add(&mut self, mut index: IndexPack, file: File, id: Id) -> Result<()> { - if let Some(fut) = self.future.take() { - fut.await??; - } - + async fn add(&mut self, mut index: IndexPack, mut file: File, id: Id) -> Result<()> { let be = self.be.clone(); let indexer = self.indexer.clone(); let cacheable = self.cacheable; - self.future = Some(spawn(async move { + let new_future = spawn(async move { + file.seek(SeekFrom::Start(0))?; be.write_file(FileType::Pack, &id, cacheable, file).await?; index.time = Some(Local::now()); indexer.write().await.add(index).await?; Ok(()) - })); + }); + if let Some(fut) = self.future.replace(new_future) { + fut.await??; + } Ok(()) }