diff --git a/src/blob/packer.rs b/src/blob/packer.rs index 09bef48..f6f4f31 100644 --- a/src/blob/packer.rs +++ b/src/blob/packer.rs @@ -155,13 +155,18 @@ impl Packer { uncompressed_length: Option, size_limit: Option, ) -> 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 { @@ -246,6 +251,10 @@ impl RawPacker { uncompressed_length: Option, size_limit: Option, ) -> 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()?;