diff --git a/Cargo.lock b/Cargo.lock index d6eba772a..7fe0d3660 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,15 +49,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - [[package]] name = "ansi_term" version = "0.12.1" @@ -475,16 +466,6 @@ dependencies = [ "syn", ] -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if 1.0.0", - "num_cpus", -] - [[package]] name = "digest" version = "0.9.0" @@ -555,12 +536,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - [[package]] name = "equihash" version = "0.2.0" @@ -1087,9 +1062,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.17.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55586aa936c35f34ba8aa5d97356d554311206e1ce1f9e68fe7b07288e5ad827" +checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2" dependencies = [ "ahash", "metrics-macros", @@ -1097,11 +1072,12 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.6.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343a5ceb38235928e7a5687412590f07e6d281522dcd9ff51246f8856eef5fe5" +checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66" dependencies = [ "hyper", + "indexmap", "ipnet", "metrics", "metrics-util", @@ -1109,41 +1085,34 @@ dependencies = [ "quanta", "thiserror", "tokio", + "tracing", ] [[package]] name = "metrics-macros" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0daa0ab3a0ae956d0e2c1f42511422850e577d36a255357d1a7d08d45ee3a2f1" +checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa" dependencies = [ - "lazy_static", "proc-macro2", "quote", - "regex", "syn", ] [[package]] name = "metrics-util" -version = "0.10.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174223789e331d9d47a4a953dac36e397db60fa8d2a111ac505388c6c7fe32e" +checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50" dependencies = [ - "ahash", - "aho-corasick", "atomic-shim", "crossbeam-epoch", "crossbeam-utils", - "dashmap", "hashbrown", - "indexmap", "metrics", "num_cpus", - "ordered-float", "parking_lot", "quanta", - "radix_trie", "sketches-ddsketch", ] @@ -1180,15 +1149,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - [[package]] name = "nix" version = "0.22.3" @@ -1325,15 +1285,6 @@ dependencies = [ "zcash_note_encryption", ] -[[package]] -name = "ordered-float" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" -dependencies = [ - "num-traits", -] - [[package]] name = "pairing" version = "0.22.0" @@ -1558,16 +1509,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - [[package]] name = "rand" version = "0.7.3" @@ -1726,8 +1667,6 @@ version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ - "aho-corasick", - "memchr", "regex-syntax", ] @@ -1865,9 +1804,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "sketches-ddsketch" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a77a8fd93886010f05e7ea0720e569d6d16c65329dbe3ec033bbbccccb017b" +checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee" [[package]] name = "smallvec" @@ -2017,21 +1956,9 @@ dependencies = [ "mio", "pin-project-lite", "socket2", - "tokio-macros", "winapi", ] -[[package]] -name = "tokio-macros" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "toml" version = "0.5.9" diff --git a/Cargo.toml b/Cargo.toml index 9c75966c9..097a07c0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,8 +69,8 @@ rayon = "1.5" # Metrics ipnet = "2" -metrics = "0.17" -metrics-exporter-prometheus = "0.6" +metrics = "0.19" +metrics-exporter-prometheus = "0.10" # Wallet tool # (also depends on tracing, and tracing-subscriber with "env-filter" and "fmt" features) diff --git a/qa/supply-chain/config.toml b/qa/supply-chain/config.toml index b31bc167d..d21981794 100644 --- a/qa/supply-chain/config.toml +++ b/qa/supply-chain/config.toml @@ -20,10 +20,6 @@ criteria = "safe-to-deploy" version = "0.7.6" criteria = "safe-to-deploy" -[[unaudited.aho-corasick]] -version = "0.7.18" -criteria = "safe-to-deploy" - [[unaudited.ansi_term]] version = "0.12.1" criteria = "safe-to-deploy" @@ -212,10 +208,6 @@ criteria = "safe-to-deploy" version = "1.0.68" criteria = "safe-to-deploy" -[[unaudited.dashmap]] -version = "4.0.2" -criteria = "safe-to-deploy" - [[unaudited.digest]] version = "0.9.0" criteria = "safe-to-deploy" @@ -244,10 +236,6 @@ criteria = "safe-to-deploy" version = "1.6.1" criteria = "safe-to-deploy" -[[unaudited.endian-type]] -version = "0.1.2" -criteria = "safe-to-deploy" - [[unaudited.ff]] version = "0.12.0" criteria = "safe-to-deploy" @@ -433,19 +421,19 @@ version = "0.2.0" criteria = "safe-to-deploy" [[unaudited.metrics]] -version = "0.17.1" +version = "0.19.0" criteria = "safe-to-deploy" [[unaudited.metrics-exporter-prometheus]] -version = "0.6.1" +version = "0.10.0" criteria = "safe-to-deploy" [[unaudited.metrics-macros]] -version = "0.4.1" +version = "0.5.1" criteria = "safe-to-deploy" [[unaudited.metrics-util]] -version = "0.10.2" +version = "0.13.0" criteria = "safe-to-deploy" [[unaudited.miniz_oxide]] @@ -460,10 +448,6 @@ criteria = "safe-to-deploy" version = "0.3.7" criteria = "safe-to-deploy" -[[unaudited.nibble_vec]] -version = "0.1.0" -criteria = "safe-to-deploy" - [[unaudited.nix]] version = "0.22.3" criteria = "safe-to-deploy" @@ -512,10 +496,6 @@ criteria = "safe-to-deploy" version = "0.3.0" criteria = "safe-to-deploy" -[[unaudited.ordered-float]] -version = "2.10.0" -criteria = "safe-to-deploy" - [[unaudited.pairing]] version = "0.22.0" criteria = "safe-to-deploy" @@ -604,10 +584,6 @@ criteria = "safe-to-deploy" version = "0.7.0" criteria = "safe-to-deploy" -[[unaudited.radix_trie]] -version = "0.2.1" -criteria = "safe-to-deploy" - [[unaudited.rand]] version = "0.7.3" criteria = "safe-to-deploy" @@ -729,7 +705,7 @@ version = "0.3.10" criteria = "safe-to-deploy" [[unaudited.sketches-ddsketch]] -version = "0.1.2" +version = "0.1.3" criteria = "safe-to-deploy" [[unaudited.smallvec]] @@ -800,10 +776,6 @@ criteria = "safe-to-deploy" version = "1.17.0" criteria = "safe-to-deploy" -[[unaudited.tokio-macros]] -version = "1.7.0" -criteria = "safe-to-deploy" - [[unaudited.toml]] version = "0.5.9" criteria = "safe-to-deploy" diff --git a/src/rust/src/metrics_ffi.rs b/src/rust/src/metrics_ffi.rs index cdc4530b9..1354389b4 100644 --- a/src/rust/src/metrics_ffi.rs +++ b/src/rust/src/metrics_ffi.rs @@ -1,5 +1,5 @@ use libc::{c_char, c_double}; -use metrics::{try_recorder, GaugeValue, Key, Label}; +use metrics::{try_recorder, Key, Label}; use metrics_exporter_prometheus::PrometheusBuilder; use std::ffi::CStr; use std::net::{IpAddr, SocketAddr}; @@ -14,20 +14,12 @@ pub extern "C" fn metrics_run( allow_ips_len: usize, prometheus_port: u16, ) -> bool { - // Parse any allowed IPs. + // Convert the C string IPs to Rust strings. let allow_ips = unsafe { slice::from_raw_parts(allow_ips, allow_ips_len) }; - let mut allow_ips: Vec = match allow_ips + let mut allow_ips: Vec<&str> = match allow_ips .iter() .map(|&p| unsafe { CStr::from_ptr(p) }) - .map(|s| { - s.to_str().ok().and_then(|s| { - s.parse() - .map_err(|e| { - error!("Invalid -metricsallowip argument '{}': {}", s, e); - }) - .ok() - }) - }) + .map(|s| s.to_str().ok()) .collect() { Some(ips) => ips, @@ -36,7 +28,7 @@ pub extern "C" fn metrics_run( } }; // We always allow localhost. - allow_ips.extend(&["127.0.0.0/8".parse().unwrap(), "::1/128".parse().unwrap()]); + allow_ips.extend(&["127.0.0.0/8", "::1/128"]); // Parse the address to bind to. let bind_address = SocketAddr::new( @@ -64,11 +56,21 @@ pub extern "C" fn metrics_run( allow_ips .into_iter() - .fold( - PrometheusBuilder::new().listen_address(bind_address), - |builder, subnet| builder.add_allowed(subnet), + .try_fold( + PrometheusBuilder::new().with_http_listener(bind_address), + |builder, subnet| { + builder.add_allowed_address(subnet).map_err(|e| { + error!("Invalid -metricsallowip argument '{}': {}", subnet, e); + e + }) + }, ) - .install() + .and_then(|builder| { + builder.install().map_err(|e| { + error!("Could not install Prometheus exporter: {}", e); + e + }) + }) .is_ok() } @@ -153,7 +155,7 @@ pub extern "C" fn metrics_key( pub extern "C" fn metrics_static_increment_counter(callsite: *const FfiCallsite, value: u64) { if let Some(recorder) = try_recorder() { let callsite = unsafe { callsite.as_ref().unwrap() }; - recorder.increment_counter(&callsite.key, value); + recorder.register_counter(&callsite.key).increment(value); } } @@ -162,7 +164,7 @@ pub extern "C" fn metrics_increment_counter(key: *mut FfiKey, value: u64) { if let Some(recorder) = try_recorder() { if !key.is_null() { let key = unsafe { Box::from_raw(key) }; - recorder.increment_counter(&key.inner, value); + recorder.register_counter(&key.inner).increment(value); } } } @@ -171,7 +173,7 @@ pub extern "C" fn metrics_increment_counter(key: *mut FfiKey, value: u64) { pub extern "C" fn metrics_static_update_gauge(callsite: *const FfiCallsite, value: c_double) { if let Some(recorder) = try_recorder() { let callsite = unsafe { callsite.as_ref().unwrap() }; - recorder.update_gauge(&callsite.key, GaugeValue::Absolute(value)); + recorder.register_gauge(&callsite.key).set(value as f64); } } @@ -180,7 +182,7 @@ pub extern "C" fn metrics_update_gauge(key: *mut FfiKey, value: c_double) { if let Some(recorder) = try_recorder() { if !key.is_null() { let key = unsafe { Box::from_raw(key) }; - recorder.update_gauge(&key.inner, GaugeValue::Absolute(value)); + recorder.register_gauge(&key.inner).set(value as f64); } } } @@ -189,7 +191,9 @@ pub extern "C" fn metrics_update_gauge(key: *mut FfiKey, value: c_double) { pub extern "C" fn metrics_static_increment_gauge(callsite: *const FfiCallsite, value: c_double) { if let Some(recorder) = try_recorder() { let callsite = unsafe { callsite.as_ref().unwrap() }; - recorder.update_gauge(&callsite.key, GaugeValue::Increment(value)); + recorder + .register_gauge(&callsite.key) + .increment(value as f64); } } @@ -198,7 +202,7 @@ pub extern "C" fn metrics_increment_gauge(key: *mut FfiKey, value: c_double) { if let Some(recorder) = try_recorder() { if !key.is_null() { let key = unsafe { Box::from_raw(key) }; - recorder.update_gauge(&key.inner, GaugeValue::Increment(value)); + recorder.register_gauge(&key.inner).increment(value as f64); } } } @@ -207,7 +211,9 @@ pub extern "C" fn metrics_increment_gauge(key: *mut FfiKey, value: c_double) { pub extern "C" fn metrics_static_decrement_gauge(callsite: *const FfiCallsite, value: c_double) { if let Some(recorder) = try_recorder() { let callsite = unsafe { callsite.as_ref().unwrap() }; - recorder.update_gauge(&callsite.key, GaugeValue::Decrement(value)); + recorder + .register_gauge(&callsite.key) + .decrement(value as f64); } } @@ -216,7 +222,7 @@ pub extern "C" fn metrics_decrement_gauge(key: *mut FfiKey, value: c_double) { if let Some(recorder) = try_recorder() { if !key.is_null() { let key = unsafe { Box::from_raw(key) }; - recorder.update_gauge(&key.inner, GaugeValue::Decrement(value)); + recorder.register_gauge(&key.inner).decrement(value as f64); } } } @@ -225,7 +231,9 @@ pub extern "C" fn metrics_decrement_gauge(key: *mut FfiKey, value: c_double) { pub extern "C" fn metrics_static_record_histogram(callsite: *const FfiCallsite, value: c_double) { if let Some(recorder) = try_recorder() { let callsite = unsafe { callsite.as_ref().unwrap() }; - recorder.record_histogram(&callsite.key, value); + recorder + .register_histogram(&callsite.key) + .record(value as f64); } } @@ -234,7 +242,7 @@ pub extern "C" fn metrics_record_histogram(key: *mut FfiKey, value: c_double) { if let Some(recorder) = try_recorder() { if !key.is_null() { let key = unsafe { Box::from_raw(key) }; - recorder.record_histogram(&key.inner, value); + recorder.register_histogram(&key.inner).record(value as f64); } } }