From 325d1322253c3df574a031751ca6d1872958ce78 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 14:37:59 +0200 Subject: [PATCH 01/11] chore(consumers): bump statsdproxy --- rust_snuba/Cargo.lock | 167 ++++++++++++++++++------------- rust_snuba/Cargo.toml | 4 +- rust_snuba/src/metrics/statsd.rs | 34 +++---- 3 files changed, 114 insertions(+), 91 deletions(-) diff --git a/rust_snuba/Cargo.lock b/rust_snuba/Cargo.lock index d50a8c08205..6454d6bf0af 100644 --- a/rust_snuba/Cargo.lock +++ b/rust_snuba/Cargo.lock @@ -351,7 +351,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -537,9 +537,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cadence" -version = "0.29.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39286bc075b023101dccdb79456a1334221c768b8faede0c2aff7ed29a9482d" +checksum = "3075f133bee430b7644c54fb629b9b4420346ffa275a45c81a6babe8b09b4f51" dependencies = [ "crossbeam-channel", ] @@ -651,7 +651,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -868,7 +868,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -879,7 +879,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -907,7 +907,7 @@ dependencies = [ "proc-macro2", "quote", "semver", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -959,7 +959,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -999,16 +999,26 @@ dependencies = [ ] [[package]] -name = "env_logger" -version = "0.10.2" +name = "env_filter" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ - "humantime", - "is-terminal", "log", "regex", - "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", ] [[package]] @@ -1270,7 +1280,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -1550,12 +1560,6 @@ dependencies = [ "url", ] -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.28" @@ -1573,7 +1577,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -1785,7 +1789,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -1965,6 +1969,30 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "jobserver" version = "0.1.31" @@ -2442,7 +2470,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2489,7 +2517,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2608,7 +2636,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2664,7 +2692,7 @@ checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2755,6 +2783,21 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2780,7 +2823,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2795,9 +2838,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -2838,7 +2881,7 @@ dependencies = [ "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -2913,9 +2956,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -3468,7 +3511,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "syn 2.0.58", + "syn 2.0.104", "thiserror", "typify", "url", @@ -3567,22 +3610,22 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -3636,7 +3679,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -3678,7 +3721,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -3788,9 +3831,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "statsdproxy" -version = "0.1.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793ec303cef342e5a80e717016050673430851d5e3159ba8275c0f801cc83c11" +checksum = "8ad88f372ad4e60c8235f74feb2fcc047377c55b1872d0b9247b8a6aed8dcba9" dependencies = [ "anyhow", "cadence", @@ -3799,7 +3842,6 @@ dependencies = [ "env_logger", "log", "rand 0.8.5", - "sentry", "serde", "serde_yaml", "signal-hook", @@ -3838,9 +3880,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -3867,7 +3909,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -3920,15 +3962,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" version = "1.0.58" @@ -3946,7 +3979,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -4066,7 +4099,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -4215,7 +4248,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -4305,7 +4338,7 @@ dependencies = [ "regress", "schemars", "serde_json", - "syn 2.0.58", + "syn 2.0.104", "thiserror", "unicode-ident", ] @@ -4322,7 +4355,7 @@ dependencies = [ "serde", "serde_json", "serde_tokenstream", - "syn 2.0.58", + "syn 2.0.104", "typify-impl", ] @@ -4510,7 +4543,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -4544,7 +4577,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4823,7 +4856,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", "synstructure", ] @@ -4844,7 +4877,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] @@ -4864,7 +4897,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", "synstructure", ] @@ -4887,7 +4920,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.104", ] [[package]] diff --git a/rust_snuba/Cargo.toml b/rust_snuba/Cargo.toml index 7fe5f056f58..f0126a47e85 100644 --- a/rust_snuba/Cargo.toml +++ b/rust_snuba/Cargo.toml @@ -24,7 +24,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] adler = "1.0.2" anyhow = { version = "1.0.69", features = ["backtrace"] } -cadence = "0.29.1" +cadence = "1.0.0" chrono = { version = "0.4.26", features = ["serde"] } ctrlc = { version = "3.2.5", features = ["termination"] } data-encoding = "2.5.0" @@ -49,7 +49,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0" } serde_path_to_error = "0.1.15" serde_with = "3.8.1" -statsdproxy = { version = "0.1.2", features = ["cadence-adapter", "sentry"] } +statsdproxy = { version = "0.4.1", features = ["cadence"] } thiserror = "1.0" tokio = { version = "1.38.2", features = ["full"] } tokio-stream = "0.1.15" diff --git a/rust_snuba/src/metrics/statsd.rs b/rust_snuba/src/metrics/statsd.rs index 7aeda83b761..088bc9ecc35 100644 --- a/rust_snuba/src/metrics/statsd.rs +++ b/rust_snuba/src/metrics/statsd.rs @@ -1,10 +1,9 @@ +use std::time::Duration; + use sentry_arroyo::metrics::{Metric, MetricSink, Recorder, StatsdRecorder}; use statsdproxy::cadence::StatsdProxyMetricSink; -use statsdproxy::config::{AggregateMetricsConfig, SampleConfig}; +use statsdproxy::config::AggregateMetricsConfig; use statsdproxy::middleware::aggregate::AggregateMetrics; -use statsdproxy::middleware::mirror::Mirror; -use statsdproxy::middleware::sample::Sample; -use statsdproxy::middleware::sentry::Sentry; use statsdproxy::middleware::upstream::Upstream; use crate::metrics::global_tags::AddGlobalTags; @@ -29,33 +28,24 @@ impl MetricSink for Wrapper { } impl StatsDBackend { - pub fn new(host: &str, port: u16, prefix: &str, ddm_metrics_sample_rate: f64) -> Self { + pub fn new(host: &str, port: u16, prefix: &str, _ddm_metrics_sample_rate: f64) -> Self { let upstream_addr = format!("{}:{}", host, port); let aggregator_sink = StatsdProxyMetricSink::new(move || { - let next_step = Upstream::new(upstream_addr.clone()).unwrap(); - - let next_step_sentry = Sample::new( - SampleConfig { - sample_rate: ddm_metrics_sample_rate, - }, - Sentry::new(), - ); - - let next_step = Mirror::new(next_step, next_step_sentry); - - // adding global tags *after* aggregation is more performant than trying to do the same - // in cadence, as it means more bytes and more memory to deal with in - // AggregateMetricsConfig - let next_step = AddGlobalTags::new(next_step); + let upstream = Upstream::new(upstream_addr.clone()).unwrap(); let config = AggregateMetricsConfig { aggregate_counters: true, flush_offset: 0, - flush_interval: 1, + flush_interval: Duration::from_secs(1), aggregate_gauges: true, max_map_size: None, }; - AggregateMetrics::new(config, next_step) + let aggregate = AggregateMetrics::new(config, upstream); + + // adding global tags *after* aggregation is more performant than trying to do the same + // in cadence, as it means more bytes and more memory to deal with in + // AggregateMetricsConfig + AddGlobalTags::new(aggregate) }); let recorder = StatsdRecorder::new(prefix, Wrapper(Box::new(aggregator_sink))); From 54d4b70f702c0275587e46aab2eb523ef707b0b5 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 14:43:05 +0200 Subject: [PATCH 02/11] remove sample rate --- rust_snuba/src/config.rs | 2 -- rust_snuba/src/consumer.rs | 16 ++-------------- rust_snuba/src/metrics/statsd.rs | 2 +- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/rust_snuba/src/config.rs b/rust_snuba/src/config.rs index c1b062b81b0..08b9769506c 100644 --- a/rust_snuba/src/config.rs +++ b/rust_snuba/src/config.rs @@ -108,7 +108,6 @@ pub struct EnvConfig { pub lower_retention_days: u16, pub valid_retention_days: HashSet, pub record_cogs: bool, - pub ddm_metrics_sample_rate: f64, pub project_stacktrace_blacklist: Vec, } @@ -122,7 +121,6 @@ impl Default for EnvConfig { lower_retention_days: 30, valid_retention_days: [30, 60, 90].iter().cloned().collect(), record_cogs: false, - ddm_metrics_sample_rate: 0.0, project_stacktrace_blacklist: Vec::new(), } } diff --git a/rust_snuba/src/consumer.rs b/rust_snuba/src/consumer.rs index b3d98918b9f..219b5da8e7a 100644 --- a/rust_snuba/src/consumer.rs +++ b/rust_snuba/src/consumer.rs @@ -179,13 +179,7 @@ pub fn consumer_v2_impl( set_global_tag("storage".to_owned(), storage_name); set_global_tag("consumer_group".to_owned(), consumer_group.to_owned()); - metrics::init(StatsDBackend::new( - &host, - port, - "snuba.consumer", - env_config.ddm_metrics_sample_rate, - )) - .unwrap(); + metrics::init(StatsDBackend::new(&host, port, "snuba.consumer")).unwrap(); } if !use_rust_processor { @@ -414,13 +408,7 @@ pub fn consumer_impl( set_global_tag("storage".to_owned(), storage_name); set_global_tag("consumer_group".to_owned(), consumer_group.to_owned()); - metrics::init(StatsDBackend::new( - &host, - port, - "snuba.consumer", - env_config.ddm_metrics_sample_rate, - )) - .unwrap(); + metrics::init(StatsDBackend::new(&host, port, "snuba.consumer")).unwrap(); } if !use_rust_processor { diff --git a/rust_snuba/src/metrics/statsd.rs b/rust_snuba/src/metrics/statsd.rs index 088bc9ecc35..524a034f1c9 100644 --- a/rust_snuba/src/metrics/statsd.rs +++ b/rust_snuba/src/metrics/statsd.rs @@ -28,7 +28,7 @@ impl MetricSink for Wrapper { } impl StatsDBackend { - pub fn new(host: &str, port: u16, prefix: &str, _ddm_metrics_sample_rate: f64) -> Self { + pub fn new(host: &str, port: u16, prefix: &str) -> Self { let upstream_addr = format!("{}:{}", host, port); let aggregator_sink = StatsdProxyMetricSink::new(move || { let upstream = Upstream::new(upstream_addr.clone()).unwrap(); From d36385fd0ae88dd3f25ba4bf7caa471b587e5c37 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 14:49:53 +0200 Subject: [PATCH 03/11] update --- rust_snuba/benches/processors.rs | 2 +- rust_snuba/src/metrics/statsd.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rust_snuba/benches/processors.rs b/rust_snuba/benches/processors.rs index c319fc18994..19d36366cc2 100644 --- a/rust_snuba/benches/processors.rs +++ b/rust_snuba/benches/processors.rs @@ -206,7 +206,7 @@ fn run_processor_bench( fn main() { // this sends to nowhere, but because it's UDP we won't error. - metrics::init(StatsDBackend::new("127.0.0.1", 8081, "snuba.consumer", 0.0)).unwrap(); + metrics::init(StatsDBackend::new("127.0.0.1", 8081, "snuba.consumer")).unwrap(); let mut c = Criterion::default().configure_from_args(); diff --git a/rust_snuba/src/metrics/statsd.rs b/rust_snuba/src/metrics/statsd.rs index 524a034f1c9..53c24d774df 100644 --- a/rust_snuba/src/metrics/statsd.rs +++ b/rust_snuba/src/metrics/statsd.rs @@ -62,7 +62,7 @@ mod tests { #[test] fn statsd_metric_backend() { - let backend = StatsDBackend::new("0.0.0.0", 8125, "test", 0.0); + let backend = StatsDBackend::new("0.0.0.0", 8125, "test"); backend.record_metric(metric!(Counter: "a", 1, "tag1" => "value1")); backend.record_metric(metric!(Gauge: "b", 20, "tag2" => "value2")); From 4b6c8db63834950e137e8badc650143bc2b450c3 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 14:50:23 +0200 Subject: [PATCH 04/11] chore(consumers): bump Rust toolchain version --- rust_snuba/rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust_snuba/rust-toolchain.toml b/rust_snuba/rust-toolchain.toml index 0193dee3606..b8889a3bb3b 100644 --- a/rust_snuba/rust-toolchain.toml +++ b/rust_snuba/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.83.0" +channel = "1.87.0" From 0d25a1216f221a64195a49402ecb00388eaaa8e8 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 14:59:49 +0200 Subject: [PATCH 05/11] chore(consumers): Send logs for tracing events at or above INFO --- rust_snuba/Cargo.lock | 506 +++++++++++++++++++++++++++++++++----- rust_snuba/Cargo.toml | 13 +- rust_snuba/src/logging.rs | 12 +- 3 files changed, 460 insertions(+), 71 deletions(-) diff --git a/rust_snuba/Cargo.lock b/rust_snuba/Cargo.lock index 6454d6bf0af..e7a3917d013 100644 --- a/rust_snuba/Cargo.lock +++ b/rust_snuba/Cargo.lock @@ -445,6 +445,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "basic-cookies" version = "0.1.5" @@ -910,6 +916,16 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.11" @@ -1347,6 +1363,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + [[package]] name = "gimli" version = "0.28.1" @@ -1464,6 +1492,17 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "hostname" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "windows-link", +] + [[package]] name = "http" version = "0.2.12" @@ -1631,6 +1670,22 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.7" @@ -2021,7 +2076,7 @@ dependencies = [ "schemars", "serde", "serde_json", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -2116,9 +2171,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" @@ -2178,9 +2233,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ "value-bag", ] @@ -2269,13 +2324,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2292,11 +2347,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2442,16 +2496,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.7.3" @@ -2596,7 +2640,16 @@ dependencies = [ "integer-sqrt", "num-traits", "rustc-hash", - "thiserror", + "thiserror 1.0.58", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", ] [[package]] @@ -2612,7 +2665,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.58", "ucd-trie", ] @@ -2963,6 +3016,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.7.3" @@ -2987,6 +3046,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -3007,6 +3076,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + [[package]] name = "rand_core" version = "0.5.1" @@ -3025,6 +3104,15 @@ dependencies = [ "getrandom 0.2.14", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -3122,7 +3210,7 @@ checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom 0.2.14", "libredox", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -3194,7 +3282,7 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -3203,7 +3291,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", @@ -3218,7 +3306,47 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.6.0", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.52.0", ] [[package]] @@ -3245,10 +3373,10 @@ dependencies = [ "prost-types", "pyo3", "regex", - "reqwest", + "reqwest 0.11.27", "schemars", "scopeguard", - "sentry", + "sentry 0.41.0", "sentry-kafka-schemas", "sentry_arroyo", "sentry_protos", @@ -3259,7 +3387,7 @@ dependencies = [ "serde_path_to_error", "serde_with", "statsdproxy", - "thiserror", + "thiserror 1.0.58", "tikv-jemallocator", "tokio", "tokio-stream", @@ -3326,6 +3454,24 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + [[package]] name = "rustversion" version = "1.0.15" @@ -3424,27 +3570,47 @@ checksum = "766448f12e44d68e675d5789a261515c46ac6ccd240abdd451a9c46c84a49523" dependencies = [ "httpdate", "native-tls", - "reqwest", + "reqwest 0.11.27", + "sentry-backtrace 0.32.2", + "sentry-contexts 0.32.2", + "sentry-core 0.32.2", + "sentry-debug-images 0.32.2", + "sentry-panic 0.32.2", + "sentry-tracing 0.32.2", + "tokio", + "ureq 2.9.6", +] + +[[package]] +name = "sentry" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507ac2be9bf2da56c831da57faf1dadd81f434bd282935cdb06193d0c94e8811" +dependencies = [ + "httpdate", + "native-tls", + "reqwest 0.12.5", "sentry-anyhow", - "sentry-backtrace", - "sentry-contexts", - "sentry-core", - "sentry-debug-images", - "sentry-panic", - "sentry-tracing", + "sentry-backtrace 0.41.0", + "sentry-contexts 0.41.0", + "sentry-core 0.41.0", + "sentry-debug-images 0.41.0", + "sentry-log", + "sentry-panic 0.41.0", + "sentry-tracing 0.41.0", "tokio", - "ureq", + "ureq 3.0.12", ] [[package]] name = "sentry-anyhow" -version = "0.32.2" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da4015667c99f88d68ca7ff02b90c762d6154a4ceb7c02922b9a1dbd3959eeb" +checksum = "1fce8e095bb4e66cbf92f7eb3fb0ff7014f7943de3e4f55b3ef69261cf32d913" dependencies = [ "anyhow", - "sentry-backtrace", - "sentry-core", + "sentry-backtrace 0.41.0", + "sentry-core 0.41.0", ] [[package]] @@ -3456,7 +3622,18 @@ dependencies = [ "backtrace", "once_cell", "regex", - "sentry-core", + "sentry-core 0.32.2", +] + +[[package]] +name = "sentry-backtrace" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb4416302fa5325181a120e0fe7d4afd83cd95e52a9b86afa34a8161383fe0dc" +dependencies = [ + "backtrace", + "regex", + "sentry-core 0.41.0", ] [[package]] @@ -3465,11 +3642,25 @@ version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ddd2a91a13805bd8dab4ebf47323426f758c35f7bf24eacc1aded9668f3824" dependencies = [ - "hostname", + "hostname 0.3.1", "libc", "os_info", "rustc_version", - "sentry-core", + "sentry-core 0.32.2", + "uname", +] + +[[package]] +name = "sentry-contexts" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936752f42b6f651dcb257da0bfa235ecc79e82011c49ed3383c212cc582263ff" +dependencies = [ + "hostname 0.4.1", + "libc", + "os_info", + "rustc_version", + "sentry-core 0.41.0", "uname", ] @@ -3481,7 +3672,19 @@ checksum = "b1189f68d7e7e102ef7171adf75f83a59607fafd1a5eecc9dc06c026ff3bdec4" dependencies = [ "once_cell", "rand 0.8.5", - "sentry-types", + "sentry-types 0.32.2", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-core" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e9bd2cadaeda3af41e9fa5d14645127d6f6a4aec73da3ae38e477ecafd3682" +dependencies = [ + "rand 0.9.1", + "sentry-types 0.41.0", "serde", "serde_json", ] @@ -3494,7 +3697,17 @@ checksum = "7b4d0a615e5eeca5699030620c119a094e04c14cf6b486ea1030460a544111a7" dependencies = [ "findshlibs", "once_cell", - "sentry-core", + "sentry-core 0.32.2", +] + +[[package]] +name = "sentry-debug-images" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e074fe9a0970c91999b23ed3195e6e30990d589fba3a68f20a1686af0f5cda" +dependencies = [ + "findshlibs", + "sentry-core 0.41.0", ] [[package]] @@ -3512,19 +3725,39 @@ dependencies = [ "serde_json", "serde_yaml", "syn 2.0.104", - "thiserror", + "thiserror 1.0.58", "typify", "url", ] +[[package]] +name = "sentry-log" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a693f27e3f63ae085cf7c176b5c44038af27c8a0170d01db30ccf776c2d40ce3" +dependencies = [ + "log", + "sentry-core 0.41.0", +] + [[package]] name = "sentry-panic" version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1c18d0b5fba195a4950f2f4c31023725c76f00aabb5840b7950479ece21b5ca" dependencies = [ - "sentry-backtrace", - "sentry-core", + "sentry-backtrace 0.32.2", + "sentry-core 0.32.2", +] + +[[package]] +name = "sentry-panic" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4651d34f3ba649d9e6dc1268443cae6728b8f741c2f0264004f8ecf5b247330d" +dependencies = [ + "sentry-backtrace 0.41.0", + "sentry-core 0.41.0", ] [[package]] @@ -3533,8 +3766,21 @@ version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3012699a9957d7f97047fd75d116e22d120668327db6e7c59824582e16e791b2" dependencies = [ - "sentry-backtrace", - "sentry-core", + "sentry-backtrace 0.32.2", + "sentry-core 0.32.2", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-tracing" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c25c47d36bc80c74d26d568ffe970c37b337c061b7234ad6f2d159439c16f000" +dependencies = [ + "bitflags 2.5.0", + "sentry-backtrace 0.41.0", + "sentry-core 0.41.0", "tracing-core", "tracing-subscriber", ] @@ -3550,7 +3796,24 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "thiserror", + "thiserror 1.0.58", + "time", + "url", + "uuid", +] + +[[package]] +name = "sentry-types" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08e7154abe2cd557f26fd70038452810748aefdf39bc973f674421224b147c1" +dependencies = [ + "debugid", + "hex", + "rand 0.9.1", + "serde", + "serde_json", + "thiserror 2.0.12", "time", "url", "uuid", @@ -3568,10 +3831,10 @@ dependencies = [ "parking_lot", "rand 0.8.5", "rdkafka 0.37.0", - "sentry", + "sentry 0.32.2", "serde", "serde_json", - "thiserror", + "thiserror 1.0.58", "tokio", "tracing", "uuid", @@ -3598,7 +3861,7 @@ dependencies = [ "rdkafka 0.36.1", "serde", "serde_json", - "thiserror", + "thiserror 1.0.58", "tracing", ] @@ -3968,7 +4231,16 @@ version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.58", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] @@ -3982,6 +4254,17 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -4074,28 +4357,27 @@ dependencies = [ [[package]] name = "tokio" -version = "1.38.2" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68722da18b0fc4a05fdc1120b302b82051265792a1e1b399086e9b204b10ad3d" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", "libc", - "mio 0.8.11", - "num_cpus", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.6", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -4339,7 +4621,7 @@ dependencies = [ "schemars", "serde_json", "syn 2.0.104", - "thiserror", + "thiserror 1.0.58", "unicode-ident", ] @@ -4411,6 +4693,36 @@ dependencies = [ "url", ] +[[package]] +name = "ureq" +version = "3.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" +dependencies = [ + "base64 0.22.1", + "der", + "log", + "native-tls", + "percent-encoding", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "ureq-proto", + "utf-8", + "webpki-root-certs 0.26.11", +] + +[[package]] +name = "ureq-proto" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" +dependencies = [ + "base64 0.22.1", + "http 1.1.0", + "httparse", + "log", +] + [[package]] name = "url" version = "2.5.4" @@ -4423,6 +4735,12 @@ dependencies = [ "serde", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf16_iter" version = "1.0.5" @@ -4513,6 +4831,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasix" version = "0.12.21" @@ -4611,6 +4938,24 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.1", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "winapi" version = "0.2.8" @@ -4663,6 +5008,12 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-sys" version = "0.48.0" @@ -4814,6 +5165,25 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -4901,6 +5271,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zerovec" version = "0.10.4" diff --git a/rust_snuba/Cargo.toml b/rust_snuba/Cargo.toml index f0126a47e85..1ff8b9d9de4 100644 --- a/rust_snuba/Cargo.toml +++ b/rust_snuba/Cargo.toml @@ -39,7 +39,18 @@ pyo3 = { version = "0.18.1", features = ["chrono"] } regex = "1.11.1" reqwest = { version = "0.11.11", features = ["stream"] } schemars = { version = "0.8.16", features = ["uuid1"] } -sentry = { version = "0.32.0", features = ["anyhow", "tracing"] } +sentry = { version = "0.41.0", default-features = false, features = [ + # default features, except `release-health` is disabled + "backtrace", + "contexts", + "debug-images", + "panic", + "transport", + # additional features + "anyhow", + "tracing", + "logs" +] } sentry-kafka-schemas = "1.3.7" sentry_arroyo = { version = "2.22.0", features = ["ssl"] } sentry_protos = "0.3.0" diff --git a/rust_snuba/src/logging.rs b/rust_snuba/src/logging.rs index 0f84de40b8d..49eecfa2e5b 100644 --- a/rust_snuba/src/logging.rs +++ b/rust_snuba/src/logging.rs @@ -9,12 +9,13 @@ pub fn setup_logging() { .or_else(|_| EnvFilter::try_new("info")) .unwrap(); - // Capture errors & warnings as exceptions + // Capture errors & warnings as exceptions, and also send everything at or above INFO as logs + // instead of breadcrumbs. let sentry_layer = - sentry::integrations::tracing::layer().event_filter(|metadata| match metadata.level() { - &Level::ERROR | &Level::WARN => EventFilter::Exception, - &Level::INFO => EventFilter::Breadcrumb, - &Level::DEBUG | &Level::TRACE => EventFilter::Ignore, + sentry::integrations::tracing::layer().event_filter(|metadata| match *metadata.level() { + Level::ERROR | Level::WARN => EventFilter::Event | EventFilter::Log, + Level::INFO => EventFilter::Log, + Level::DEBUG | Level::TRACE => EventFilter::Ignore, }); tracing_subscriber::registry() @@ -31,6 +32,7 @@ pub fn setup_sentry(sentry_dsn: &str) -> ClientInitGuard { // the value for release is also computed in python snuba, please keep the // logic in sync release: std::env::var("SNUBA_RELEASE").ok().map(From::from), + enable_logs: true, ..Default::default() }, )) From 5fa8155bc31485dca80929e92a12a93492c2f799 Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 15:29:13 +0200 Subject: [PATCH 06/11] lints --- rust_snuba/src/consumer.rs | 9 ++++++++- rust_snuba/src/strategies/python.rs | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/rust_snuba/src/consumer.rs b/rust_snuba/src/consumer.rs index 219b5da8e7a..58acf9d1a20 100644 --- a/rust_snuba/src/consumer.rs +++ b/rust_snuba/src/consumer.rs @@ -557,7 +557,14 @@ pub fn consumer_impl( } } -pyo3::create_exception!(rust_snuba, SnubaRustError, pyo3::exceptions::PyException); +#[allow( + unexpected_cfgs, + reason = "Fixed in pyo3 v0.23, see https://github.com/PyO3/pyo3/issues/4743" +)] +mod exceptions { + pyo3::create_exception!(rust_snuba, SnubaRustError, pyo3::exceptions::PyException); +} +use exceptions::*; /// insert: encoded rows type PyInsert = PyObject; diff --git a/rust_snuba/src/strategies/python.rs b/rust_snuba/src/strategies/python.rs index 85bb2072165..91c07ffb67e 100644 --- a/rust_snuba/src/strategies/python.rs +++ b/rust_snuba/src/strategies/python.rs @@ -246,7 +246,7 @@ impl ProcessingStrategy for PythonTransformStep { message: transformed_message, })) => { self.transformed_messages.push_front(transformed_message); - if deadline.map_or(false, |d| d.has_elapsed()) { + if deadline.is_some_and(|d| d.has_elapsed()) { tracing::warn!("Timeout reached"); break; } From dfe8c427c00ab8e62696c987e6d4ab12bf90469b Mon Sep 17 00:00:00 2001 From: lcian Date: Wed, 25 Jun 2025 15:33:58 +0200 Subject: [PATCH 07/11] lints --- rust_snuba/src/processors/errors.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rust_snuba/src/processors/errors.rs b/rust_snuba/src/processors/errors.rs index 16ff26f9dfa..67951b3b4e5 100644 --- a/rust_snuba/src/processors/errors.rs +++ b/rust_snuba/src/processors/errors.rs @@ -87,6 +87,7 @@ pub fn process_message_with_replacement( } } +#[expect(clippy::large_enum_variant)] #[derive(Debug, Deserialize, JsonSchema)] #[serde(untagged)] enum Message { From 30ee7314ce7ec6262d863006b0d8bc9da8406e98 Mon Sep 17 00:00:00 2001 From: Lorenzo Cian Date: Wed, 25 Jun 2025 15:39:13 +0200 Subject: [PATCH 08/11] Update consumer.rs --- rust_snuba/src/consumer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust_snuba/src/consumer.rs b/rust_snuba/src/consumer.rs index 58acf9d1a20..baafb5657f7 100644 --- a/rust_snuba/src/consumer.rs +++ b/rust_snuba/src/consumer.rs @@ -557,7 +557,7 @@ pub fn consumer_impl( } } -#[allow( +#[expect( unexpected_cfgs, reason = "Fixed in pyo3 v0.23, see https://github.com/PyO3/pyo3/issues/4743" )] From 6dd91b7b7a060901261d3a7c32512ece74ebfb6d Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 26 Jun 2025 10:39:34 +0200 Subject: [PATCH 09/11] bump to 1.85 instead --- rust_snuba/rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust_snuba/rust-toolchain.toml b/rust_snuba/rust-toolchain.toml index b8889a3bb3b..c1bc0a69448 100644 --- a/rust_snuba/rust-toolchain.toml +++ b/rust_snuba/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.87.0" +channel = "1.85.0" From db247246dc954e8c3b13c8dd1db039395cb8aaf5 Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 26 Jun 2025 11:44:16 +0200 Subject: [PATCH 10/11] lint --- rust_snuba/src/processors/errors.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/rust_snuba/src/processors/errors.rs b/rust_snuba/src/processors/errors.rs index 67951b3b4e5..16ff26f9dfa 100644 --- a/rust_snuba/src/processors/errors.rs +++ b/rust_snuba/src/processors/errors.rs @@ -87,7 +87,6 @@ pub fn process_message_with_replacement( } } -#[expect(clippy::large_enum_variant)] #[derive(Debug, Deserialize, JsonSchema)] #[serde(untagged)] enum Message { From abbd45af768773a0fad59a858ca07bfb8087fd25 Mon Sep 17 00:00:00 2001 From: lcian Date: Mon, 7 Jul 2025 13:22:01 +0200 Subject: [PATCH 11/11] bump arroyo --- rust_snuba/Cargo.lock | 184 ++++++------------------------------------ rust_snuba/Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 162 deletions(-) diff --git a/rust_snuba/Cargo.lock b/rust_snuba/Cargo.lock index 6c76ca83b6d..761a9611cf9 100644 --- a/rust_snuba/Cargo.lock +++ b/rust_snuba/Cargo.lock @@ -1481,17 +1481,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", -] - [[package]] name = "hostname" version = "0.4.1" @@ -2240,12 +2229,6 @@ dependencies = [ "value-bag", ] -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -3376,7 +3359,7 @@ dependencies = [ "reqwest 0.11.27", "schemars", "scopeguard", - "sentry 0.41.0", + "sentry", "sentry-kafka-schemas", "sentry_arroyo", "sentry_protos", @@ -3562,25 +3545,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" -[[package]] -name = "sentry" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766448f12e44d68e675d5789a261515c46ac6ccd240abdd451a9c46c84a49523" -dependencies = [ - "httpdate", - "native-tls", - "reqwest 0.11.27", - "sentry-backtrace 0.32.2", - "sentry-contexts 0.32.2", - "sentry-core 0.32.2", - "sentry-debug-images 0.32.2", - "sentry-panic 0.32.2", - "sentry-tracing 0.32.2", - "tokio", - "ureq 2.9.6", -] - [[package]] name = "sentry" version = "0.41.0" @@ -3591,15 +3555,15 @@ dependencies = [ "native-tls", "reqwest 0.12.5", "sentry-anyhow", - "sentry-backtrace 0.41.0", - "sentry-contexts 0.41.0", - "sentry-core 0.41.0", - "sentry-debug-images 0.41.0", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", "sentry-log", - "sentry-panic 0.41.0", - "sentry-tracing 0.41.0", + "sentry-panic", + "sentry-tracing", "tokio", - "ureq 3.0.12", + "ureq", ] [[package]] @@ -3609,20 +3573,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fce8e095bb4e66cbf92f7eb3fb0ff7014f7943de3e4f55b3ef69261cf32d913" dependencies = [ "anyhow", - "sentry-backtrace 0.41.0", - "sentry-core 0.41.0", -] - -[[package]] -name = "sentry-backtrace" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32701cad8b3c78101e1cd33039303154791b0ff22e7802ed8cc23212ef478b45" -dependencies = [ - "backtrace", - "once_cell", - "regex", - "sentry-core 0.32.2", + "sentry-backtrace", + "sentry-core", ] [[package]] @@ -3633,21 +3585,7 @@ checksum = "eb4416302fa5325181a120e0fe7d4afd83cd95e52a9b86afa34a8161383fe0dc" dependencies = [ "backtrace", "regex", - "sentry-core 0.41.0", -] - -[[package]] -name = "sentry-contexts" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ddd2a91a13805bd8dab4ebf47323426f758c35f7bf24eacc1aded9668f3824" -dependencies = [ - "hostname 0.3.1", - "libc", - "os_info", - "rustc_version", - "sentry-core 0.32.2", - "uname", + "sentry-core", ] [[package]] @@ -3656,27 +3594,14 @@ version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "936752f42b6f651dcb257da0bfa235ecc79e82011c49ed3383c212cc582263ff" dependencies = [ - "hostname 0.4.1", + "hostname", "libc", "os_info", "rustc_version", - "sentry-core 0.41.0", + "sentry-core", "uname", ] -[[package]] -name = "sentry-core" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1189f68d7e7e102ef7171adf75f83a59607fafd1a5eecc9dc06c026ff3bdec4" -dependencies = [ - "once_cell", - "rand 0.8.5", - "sentry-types 0.32.2", - "serde", - "serde_json", -] - [[package]] name = "sentry-core" version = "0.41.0" @@ -3684,22 +3609,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e9bd2cadaeda3af41e9fa5d14645127d6f6a4aec73da3ae38e477ecafd3682" dependencies = [ "rand 0.9.1", - "sentry-types 0.41.0", + "sentry-types", "serde", "serde_json", ] -[[package]] -name = "sentry-debug-images" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4d0a615e5eeca5699030620c119a094e04c14cf6b486ea1030460a544111a7" -dependencies = [ - "findshlibs", - "once_cell", - "sentry-core 0.32.2", -] - [[package]] name = "sentry-debug-images" version = "0.41.0" @@ -3707,7 +3621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1e074fe9a0970c91999b23ed3195e6e30990d589fba3a68f20a1686af0f5cda" dependencies = [ "findshlibs", - "sentry-core 0.41.0", + "sentry-core", ] [[package]] @@ -3737,17 +3651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a693f27e3f63ae085cf7c176b5c44038af27c8a0170d01db30ccf776c2d40ce3" dependencies = [ "log", - "sentry-core 0.41.0", -] - -[[package]] -name = "sentry-panic" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c18d0b5fba195a4950f2f4c31023725c76f00aabb5840b7950479ece21b5ca" -dependencies = [ - "sentry-backtrace 0.32.2", - "sentry-core 0.32.2", + "sentry-core", ] [[package]] @@ -3756,20 +3660,8 @@ version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4651d34f3ba649d9e6dc1268443cae6728b8f741c2f0264004f8ecf5b247330d" dependencies = [ - "sentry-backtrace 0.41.0", - "sentry-core 0.41.0", -] - -[[package]] -name = "sentry-tracing" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3012699a9957d7f97047fd75d116e22d120668327db6e7c59824582e16e791b2" -dependencies = [ - "sentry-backtrace 0.32.2", - "sentry-core 0.32.2", - "tracing-core", - "tracing-subscriber", + "sentry-backtrace", + "sentry-core", ] [[package]] @@ -3779,29 +3671,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c25c47d36bc80c74d26d568ffe970c37b337c061b7234ad6f2d159439c16f000" dependencies = [ "bitflags 2.5.0", - "sentry-backtrace 0.41.0", - "sentry-core 0.41.0", + "sentry-backtrace", + "sentry-core", "tracing-core", "tracing-subscriber", ] -[[package]] -name = "sentry-types" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7173fd594569091f68a7c37a886e202f4d0c1db1e1fa1d18a051ba695b2e2ec" -dependencies = [ - "debugid", - "hex", - "rand 0.8.5", - "serde", - "serde_json", - "thiserror 1.0.58", - "time", - "url", - "uuid", -] - [[package]] name = "sentry-types" version = "0.41.0" @@ -3821,9 +3696,9 @@ dependencies = [ [[package]] name = "sentry_arroyo" -version = "2.25.0" +version = "2.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c26499a688f5faf0d434aee9d2de16d52a7c90e0ee4a7f65dbb20acf85dfdf" +checksum = "e9556aa8820b4e81f28ca6490a9e31d87699f945eee380202d9c88a896205078" dependencies = [ "chrono", "coarsetime", @@ -3831,7 +3706,7 @@ dependencies = [ "parking_lot", "rand 0.8.5", "rdkafka 0.37.0", - "sentry 0.32.2", + "sentry-core", "serde", "serde_json", "thiserror 1.0.58", @@ -4680,19 +4555,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "ureq" -version = "2.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" -dependencies = [ - "base64 0.21.7", - "log", - "native-tls", - "once_cell", - "url", -] - [[package]] name = "ureq" version = "3.0.12" diff --git a/rust_snuba/Cargo.toml b/rust_snuba/Cargo.toml index 1ff8b9d9de4..66c33d4d3f1 100644 --- a/rust_snuba/Cargo.toml +++ b/rust_snuba/Cargo.toml @@ -52,7 +52,7 @@ sentry = { version = "0.41.0", default-features = false, features = [ "logs" ] } sentry-kafka-schemas = "1.3.7" -sentry_arroyo = { version = "2.22.0", features = ["ssl"] } +sentry_arroyo = { version = "2.27.0", features = ["ssl"] } sentry_protos = "0.3.0" sentry_usage_accountant = { version = "0.1.0", features = ["kafka"] } seq-macro = "0.3"