From 15dccc3b7e428977709957386b1337c945bfff6e Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Wed, 19 Nov 2025 15:08:38 +0100 Subject: [PATCH] chore: Remove support for `brotli` chunk compression (#2973) ### Description It appears we have never supported `brotli` server-side so there is no reason to support it in the CLI, either. ### Issues - Resolves #2808 - Resolves [CLI-174](https://linear.app/getsentry/issue/CLI-174/remove-brotli-support-for-chunk-uploads) --- Cargo.lock | 37 ---------------------- Cargo.toml | 1 - src/api/data_types/chunking/compression.rs | 4 --- src/api/mod.rs | 16 ---------- 4 files changed, 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca17404d25..11444fabf0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,21 +60,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - [[package]] name = "allocator-api2" version = "0.2.21" @@ -307,27 +292,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - [[package]] name = "brownstone" version = "3.0.0" @@ -2733,7 +2697,6 @@ dependencies = [ "apple-catalog-parsing", "assert_cmd", "backon", - "brotli", "bytecount", "chrono", "chrono-tz", diff --git a/Cargo.toml b/Cargo.toml index 2d905c03f0..79d65e78f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,7 +78,6 @@ chrono-tz = "0.8.4" secrecy = "0.8.0" lru = "0.16.0" backon = { version = "1.5.2", features = ["std", "std-blocking-sleep"] } -brotli = "8.0.2" [dev-dependencies] assert_cmd = "2.0.11" diff --git a/src/api/data_types/chunking/compression.rs b/src/api/data_types/chunking/compression.rs index 6c0660c802..7ab039531d 100644 --- a/src/api/data_types/chunking/compression.rs +++ b/src/api/data_types/chunking/compression.rs @@ -7,8 +7,6 @@ use serde::Deserialize; pub enum ChunkCompression { /// GZIP compression (including header) Gzip = 10, - /// Brotli compression - Brotli = 20, /// No compression should be applied #[default] #[serde(other)] @@ -20,7 +18,6 @@ impl ChunkCompression { match self { ChunkCompression::Uncompressed => "file", ChunkCompression::Gzip => "file_gzip", - ChunkCompression::Brotli => "file_brotli", } } } @@ -30,7 +27,6 @@ impl fmt::Display for ChunkCompression { match *self { ChunkCompression::Uncompressed => write!(f, "uncompressed"), ChunkCompression::Gzip => write!(f, "gzip"), - ChunkCompression::Brotli => write!(f, "brotli"), } } } diff --git a/src/api/mod.rs b/src/api/mod.rs index 0a09334c26..0c744e4df3 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -22,8 +22,6 @@ use std::{fmt, thread}; use anyhow::{Context as _, Result}; use backon::BlockingRetryable as _; -use brotli::enc::BrotliEncoderParams; -use brotli::CompressorWriter; #[cfg(target_os = "macos")] use chrono::Duration; use chrono::{DateTime, FixedOffset, Utc}; @@ -358,20 +356,6 @@ impl Api { /// Compresses a file with the given compression. fn compress(data: &[u8], compression: ChunkCompression) -> Result, io::Error> { Ok(match compression { - ChunkCompression::Brotli => { - let mut encoder = CompressorWriter::with_params( - Vec::new(), - 0, - &BrotliEncoderParams { - quality: 6, - ..Default::default() - }, - ); - encoder.write_all(data)?; - encoder.flush()?; - encoder.into_inner() - } - ChunkCompression::Gzip => { let mut encoder = GzEncoder::new(Vec::new(), Default::default()); encoder.write_all(data)?;