packer: Add checks to avoid saving duplicate blobs

This commit is contained in:
Alexander Weiss 2023-01-16 09:47:12 +01:00
parent f0e90a98c4
commit 1df619ea8e

View File

@ -155,13 +155,18 @@ impl<BE: DecryptWriteBackend> Packer<BE> {
uncompressed_length: Option<NonZeroU32>,
size_limit: Option<u32>,
) -> Result<()> {
self.raw_packer.write().unwrap().add_raw(
data,
id,
data_len,
uncompressed_length,
size_limit,
)
// only add if this blob is not present
if self.indexer.read().unwrap().has(id) {
Ok(())
} else {
self.raw_packer.write().unwrap().add_raw(
data,
id,
data_len,
uncompressed_length,
size_limit,
)
}
}
pub fn finalize(self) -> Result<PackerStats> {
@ -246,6 +251,10 @@ impl<BE: DecryptWriteBackend> RawPacker<BE> {
uncompressed_length: Option<NonZeroU32>,
size_limit: Option<u32>,
) -> Result<()> {
if self.has(id) {
return Ok(());
}
self.stats.blobs += 1;
self.stats.data += data_len;
let data_len_packed: u64 = data.len().try_into()?;