diff --git a/Cargo.lock b/Cargo.lock index e9b63f60f..71773ed4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,7 +53,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "serde", "version_check", @@ -113,47 +113,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -161,9 +162,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" [[package]] name = "api" @@ -194,6 +195,8 @@ dependencies = [ "iref-enum", "json-ld", "jwtk", + "metrics", + "metrics-exporter-prometheus", "opa", "opa-tp-protocol", "opentelemetry 0.19.0", @@ -202,7 +205,7 @@ dependencies = [ "r2d2", "rand 0.8.5", "rand_core 0.6.4", - "reqwest", + "reqwest 0.11.27", "sawtooth-sdk", "sawtooth_tp", "serde", @@ -258,9 +261,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "9f2776ead772134d55b62dd45e59a79e21612d85d0af729b8b7d3967d601a62a" dependencies = [ "concurrent-queue", "event-listener 5.3.0", @@ -288,7 +291,7 @@ dependencies = [ "fnv", "futures-util", "handlebars", - "http", + "http 0.2.12", "indexmap 1.9.3", "mime", "multer", @@ -420,7 +423,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -437,7 +440,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -465,9 +468,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backoff" @@ -476,7 +479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "futures-core", - "getrandom 0.2.14", + "getrandom 0.2.15", "instant", "pin-project-lite", "rand 0.8.5", @@ -516,6 +519,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -675,9 +684,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.95" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" [[package]] name = "cfg-if" @@ -974,7 +983,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -1013,9 +1022,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "colored" @@ -1071,7 +1080,7 @@ dependencies = [ "opa-tp-protocol", "openssl", "percent-encoding", - "pkcs8", + "pkcs8 0.10.2", "portpicker", "proptest", "prost 0.10.4", @@ -1081,7 +1090,7 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "rdf-types", - "reqwest", + "reqwest 0.11.27", "rust-embed", "sawtooth-sdk", "serde", @@ -1552,6 +1561,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.11" @@ -1597,7 +1616,7 @@ dependencies = [ "diesel_table_macro_syntax", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -1617,7 +1636,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -1676,7 +1695,7 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "der", + "der 0.6.1", "elliptic-curve", "rfc6979", "serdect", @@ -1697,13 +1716,13 @@ checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ "base16ct", "crypto-bigint", - "der", + "der 0.6.1", "digest", "ff", "generic-array", "group", "pem-rfc7468", - "pkcs8", + "pkcs8 0.9.0", "rand_core 0.6.4", "sec1", "serdect", @@ -1745,9 +1764,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1872,9 +1891,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1986,7 +2005,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -2073,9 +2092,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -2137,7 +2156,7 @@ version = "0.7.6" dependencies = [ "anyhow", "clap 3.2.25", - "http", + "http 0.2.12", "rand 0.8.5", "serde_json", "tungstenite 0.19.0", @@ -2165,7 +2184,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.12", "indexmap 2.2.6", "slab", "tokio", @@ -2236,7 +2255,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http", + "http 0.2.12", "httpdate", "mime", "sha1", @@ -2248,7 +2267,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "http", + "http 0.2.12", ] [[package]] @@ -2322,6 +2341,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -2329,7 +2359,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -2356,8 +2409,8 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -2369,6 +2422,25 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" version = "0.24.2" @@ -2376,8 +2448,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", - "hyper", + "http 0.2.12", + "hyper 0.14.28", "rustls", "tokio", "tokio-rustls", @@ -2390,12 +2462,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper", + "hyper 0.14.28", "native-tls", "tokio", "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.3.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.3.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.60" @@ -2548,6 +2656,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "iso8601" version = "0.6.1" @@ -2765,7 +2879,7 @@ dependencies = [ "clap 4.5.4", "fancy-regex", "fraction", - "getrandom 0.2.14", + "getrandom 0.2.15", "iso8601", "itoa", "memchr", @@ -2774,7 +2888,7 @@ dependencies = [ "parking_lot", "percent-encoding", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "time", @@ -2802,7 +2916,7 @@ dependencies = [ "foreign-types", "openssl", "openssl-sys", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "smallvec", @@ -2909,9 +3023,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libm" @@ -2994,6 +3108,15 @@ dependencies = [ "libc", ] +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + [[package]] name = "maplit" version = "1.0.2" @@ -3035,6 +3158,61 @@ dependencies = [ "toml 0.2.1", ] +[[package]] +name = "metrics" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde3af1a009ed76a778cb84fdef9e7dbbdf5775ae3e4cc1f434a6a307f6f76c5" +dependencies = [ + "ahash 0.8.11", + "metrics-macros", + "portable-atomic", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d4fa7ce7c4862db464a37b0b31d89bca874562f034bd7993895572783d02950" +dependencies = [ + "base64 0.21.7", + "hyper 0.14.28", + "indexmap 1.9.3", + "ipnet", + "metrics", + "metrics-util", + "quanta", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-macros" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b4faf00617defe497754acde3024865bc143d44a86799b24e191ecff91354f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "metrics-util" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "111cb375987443c3de8d503580b536f77dc8416d32db62d9456db5d93bd7ac47" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.13.2", + "metrics", + "num_cpus", + "quanta", + "sketches-ddsketch", +] + [[package]] name = "migrations_internals" version = "2.1.0" @@ -3097,7 +3275,7 @@ dependencies = [ "assert-json-diff", "colored", "futures-core", - "hyper", + "hyper 0.14.28", "log", "rand 0.8.5", "regex", @@ -3122,7 +3300,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http", + "http 0.2.12", "httparse", "log", "memchr", @@ -3209,9 +3387,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -3223,11 +3401,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -3240,9 +3417,9 @@ checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -3264,9 +3441,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -3275,11 +3452,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -3287,9 +3463,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -3322,10 +3498,10 @@ checksum = "c38841cdd844847e3e7c8d29cef9dcfed8877f8f56f9071f77843ecf3baf937f" dependencies = [ "base64 0.13.1", "chrono", - "getrandom 0.2.14", - "http", + "getrandom 0.2.15", + "http 0.2.12", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "serde_path_to_error", @@ -3504,7 +3680,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -3579,9 +3755,9 @@ checksum = "1edc79add46364183ece1a4542592ca593e6421c60807232f5b8f7a31703825d" dependencies = [ "async-trait", "bytes", - "http", + "http 0.2.12", "opentelemetry_api 0.18.0", - "reqwest", + "reqwest 0.11.27", ] [[package]] @@ -3592,7 +3768,7 @@ checksum = "7f51189ce8be654f9b5f7e70e49967ed894e84a06fc35c6c042e64ac1fc5399e" dependencies = [ "async-trait", "bytes", - "http", + "http 0.2.12", "opentelemetry 0.21.0", ] @@ -3606,12 +3782,12 @@ dependencies = [ "futures", "futures-executor", "headers", - "http", + "http 0.2.12", "once_cell", "opentelemetry 0.18.0", "opentelemetry-http 0.7.0", "opentelemetry-semantic-conventions 0.10.0", - "reqwest", + "reqwest 0.11.27", "thiserror", "thrift", "tokio", @@ -3772,9 +3948,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pct-str" @@ -3808,9 +3984,9 @@ checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c" [[package]] name = "pest" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -3819,9 +3995,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -3829,22 +4005,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] name = "pest_meta" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -3853,9 +4029,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap 2.2.6", @@ -3916,7 +4092,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -3933,9 +4109,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" dependencies = [ "atomic-waker", "fastrand", @@ -3948,8 +4124,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", - "spki", + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.9", + "spki 0.7.3", ] [[package]] @@ -3997,8 +4183,8 @@ dependencies = [ "bytes", "futures-util", "headers", - "http", - "hyper", + "http 0.2.12", + "hyper 0.14.28", "mime", "nix 0.27.1", "opentelemetry 0.21.0", @@ -4031,9 +4217,15 @@ dependencies = [ "proc-macro-crate 2.0.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + [[package]] name = "portpicker" version = "0.1.1" @@ -4145,9 +4337,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] @@ -4298,9 +4490,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.34" +version = "2.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe63c1c8bb438205c1245719638a0b14fe6e3b33f4406ac36b4770a706655345" +checksum = "7b320cda4ad7e8f4269fa415754418f83b38c666a5e2e99ea48825b274a373f3" dependencies = [ "psl-types", ] @@ -4320,6 +4512,22 @@ dependencies = [ "cc", ] +[[package]] +name = "quanta" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" +dependencies = [ + "crossbeam-utils", + "libc", + "mach2", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + [[package]] name = "question" version = "0.2.2" @@ -4412,7 +4620,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -4442,6 +4650,15 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "rayon" version = "1.10.0" @@ -4500,7 +4717,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libredox", "thiserror", ] @@ -4563,9 +4780,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "relative-path" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" @@ -4579,11 +4796,11 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", "hyper-rustls", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -4593,7 +4810,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", @@ -4608,7 +4825,46 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webpki-roots", - "winreg", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.2", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.52.0", ] [[package]] @@ -4639,7 +4895,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -4666,7 +4922,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.60", + "syn 2.0.63", "walkdir", ] @@ -4683,9 +4939,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -4708,7 +4964,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", - "errno 0.3.8", + "errno 0.3.9", "libc", "linux-raw-sys 0.4.13", "windows-sys 0.52.0", @@ -4735,6 +4991,22 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -4759,9 +5031,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "ryu-js" @@ -4889,9 +5161,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct", - "der", + "der 0.6.1", "generic-array", - "pkcs8", + "pkcs8 0.9.0", "serdect", "subtle", "zeroize", @@ -4917,11 +5189,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -4930,9 +5202,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -4940,9 +5212,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.199" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] @@ -4959,20 +5231,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.199" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -5117,6 +5389,12 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "sketches-ddsketch" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" + [[package]] name = "slab" version = "0.4.9" @@ -5149,9 +5427,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5170,7 +5448,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der 0.7.9", ] [[package]] @@ -5255,9 +5543,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" dependencies = [ "proc-macro2", "quote", @@ -5375,22 +5663,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -5506,7 +5794,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -5554,9 +5842,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -5564,7 +5852,6 @@ dependencies = [ "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -5627,6 +5914,28 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -5639,6 +5948,7 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5652,7 +5962,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] @@ -5667,15 +5977,15 @@ dependencies = [ [[package]] name = "tracing-elastic-apm" -version = "3.2.3" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c84d8ae362ca1383729d2c37e53468ed2681b8d01ab589705b32d37638f79549" +checksum = "121a789ea7fefcda500bf8d9de790010b4b9636447ee249f8d4c3761316c8ae9" dependencies = [ "anyhow", - "base64 0.13.1", + "base64 0.22.1", "fxhash", "rand 0.8.5", - "reqwest", + "reqwest 0.12.4", "serde", "serde_json", "tokio", @@ -5765,7 +6075,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.12", "httparse", "log", "rand 0.8.5", @@ -5784,7 +6094,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.12", "httparse", "log", "rand 0.8.5", @@ -5929,7 +6239,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -5938,7 +6248,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "serde", ] @@ -6055,7 +6365,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", "wasm-bindgen-shared", ] @@ -6089,7 +6399,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6596,6 +6906,16 @@ 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", + "windows-sys 0.48.0", +] + [[package]] name = "xattr" version = "1.3.1" @@ -6615,22 +6935,22 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.63", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 1fe41ed3e..7194ff440 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,6 +98,8 @@ prost = "0.10" # common, sawtooth-protocol, sawtooth-tp: version = "0.10.0" prost-build = "0.10.0" prost-types = "0.11.2" protobuf = "2.27.1" +metrics = "0.21.0" +metrics-exporter-prometheus = "0.12.1" question = "0.2.2" r2d2 = "0.8.9" rand = { version = "0.8.5", features = ["getrandom"] } diff --git a/charts/chronicle/templates/check_metrics_available.yaml b/charts/chronicle/templates/check_metrics_available.yaml new file mode 100644 index 000000000..f9965fe87 --- /dev/null +++ b/charts/chronicle/templates/check_metrics_available.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.names.fullname" . }}-scripts +data: + first_depth_charge.sh: | + #!/bin/bash + metrics=$(curl -s http://localhost:9000/metrics) + count=$(echo "$metrics" | grep '^depth_charge_round_trip_count' | awk '{print $2}') + if [[ -z "$count" ]] || [[ $count -eq 0 ]]; then + exit 1 + fi + check_timeouts.sh: | + #!/bin/bash + metrics=$(curl -s http://localhost:9000/metrics) + timeouts=$(echo "$metrics" | grep '^depth_charge_timeouts' | awk '{print $2}' | tr -d '\r') + if [[ "$timeouts" =~ ^[0-9]+$ ]] && [[ "$timeouts" -ne 0 ]]; then + echo "Non-zero depth_charge_timeouts detected: $timeouts" + exit 1 + else + echo "No non-zero depth_charge_timeouts detected." + exit 0 + fi diff --git a/charts/chronicle/templates/statefulset.yaml b/charts/chronicle/templates/statefulset.yaml index d79898728..e3cb37602 100644 --- a/charts/chronicle/templates/statefulset.yaml +++ b/charts/chronicle/templates/statefulset.yaml @@ -123,13 +123,16 @@ spec: {{- end }} serve-api \ --interface 0.0.0.0:{{ .Values.port }} \ + {{- if .Values.livenessProbe.enabled }} + --liveness-interval {{ .Values.livenessProbe.periodSeconds }} + --liveness-deadline {{ .Values.livenessProbe.timeoutSeconds }} + {{- end }} {{- if .Values.auth.required }} --require-auth \ {{- end }} {{ include "chronicle.jwks-url.cli" . }} {{ include "chronicle.userinfo-url.cli" . }} - {{ include "chronicle.id-claims" . }} - ; + {{ include "chronicle.id-claims" . }}; env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }} - name: RUST_LOG value: {{ .Values.logLevel }} @@ -144,6 +147,26 @@ spec: {{- end }} {{- include "lib.safeToYaml" .Values.postgres.env | nindent 12 }} resources: {{- include "lib.safeToYaml" .Values.resources | nindent 12 }} + {{- if .Values.livenessProbe.enabled }} + livenessProbe: + exec: + command: + - /bin/bash + - /scripts/check_timeouts.sh + initialDelaySeconds: 1 + periodSeconds: 1 + failureThreshold: 1 + {{- end}} + {{- if .Values.readinessProbe.enabled }} + readinessProbe: + exec: + command: + - /bin/bash + - /scripts/first_depth_charge.sh + initialDelaySeconds: 1 + periodSeconds: 1 + failureThreshold: 600 + {{- end}} volumeMounts: - name: chronicle-config mountPath: /etc/chronicle/config/ @@ -152,107 +175,10 @@ spec: readOnly: true - name: chronicle-data mountPath: /var/lib/chronicle/store/ + - name: check-metrics-available + mountPath: /scripts/ + readOnly: true {{- include "lib.volumeMounts" .Values.extraVolumeMounts | nindent 12 }} - {{- if .Values.livenessProbe.enabled }} - livenessProbe: - exec: - command: - - bash - - -c - - | - PROBE_ID="startup_$(LC_ALL=C tr -dc A-Za-z0-9 /tmp/import.json && - echo "Probe ID: $PROBE_ID" && - chronicle \ - -c /etc/chronicle/config/config.toml \ - --console-logging json \ - --sawtooth tcp://{{ include "chronicle.sawtooth.service" . }}:{{ include "chronicle.sawtooth.sawcomp" . }} \ - --remote-database \ - --database-name {{ .Values.postgres.database }} \ - --database-username {{ .Values.postgres.user }} \ - --database-host {{ .Values.postgres.host }} \ - {{- if not .Values.opa.enabled }} - --embedded-opa-policy \ - {{- end }} - import {{ .Values.livenessProbe.namespaceName }} {{ .Values.livenessProbe.namespaceUuid }} < /tmp/import.json - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - {{- end }} - {{- if .Values.startUpProbe.enabled }} - startupProbe: - exec: - command: - - bash - - -c - - | - PROBE_ID="startup_$(LC_ALL=C tr -dc A-Za-z0-9 /tmp/import.json && - echo "Probe ID: $PROBE_ID" && - chronicle \ - -c /etc/chronicle/config/config.toml \ - --console-logging json \ - --sawtooth tcp://{{ include "chronicle.sawtooth.service" . }}:{{ include "chronicle.sawtooth.sawcomp" . }} \ - --remote-database \ - --database-name {{ .Values.postgres.database }} \ - --database-username {{ .Values.postgres.user }} \ - --database-host {{ .Values.postgres.host }} \ - {{- if not .Values.opa.enabled }} - --embedded-opa-policy \ - {{- end }} - import {{ .Values.startUpProbe.namespaceName }} {{ .Values.startUpProbe.namespaceUuid }} < /tmp/import.json - initialDelaySeconds: {{ .Values.startUpProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.startUpProbe.periodSeconds }} - timeoutSeconds: {{ .Values.startUpProbe.timeoutSeconds }} - failureThreshold: {{ .Values.startUpProbe.failureThreshold }} - {{- end }} volumes: - name: chronicle-secrets persistentVolumeClaim: @@ -263,6 +189,9 @@ spec: - name: chronicle-config configMap: name: {{ .Release.Name }}-chronicle-config + - name: check-metrics-available + configMap: + name: {{ include "common.names.fullname" . }}-scripts {{- if not .Values.postgres.persistence.enabled }} - name: "pgdata" emptyDir: {} diff --git a/charts/chronicle/values.yaml b/charts/chronicle/values.yaml index 9d80dc9a9..da3417a63 100644 --- a/charts/chronicle/values.yaml +++ b/charts/chronicle/values.yaml @@ -24,17 +24,15 @@ auth: ## @md | `livenessProbe.enabled` | if true, enables the liveness probe | false | livenessProbe: - enabled: false + enabled: true ## @md | `livenessProbe.timeoutSeconds` | number of seconds after which the probe times out | 10 | timeoutSeconds: 20 ## @md | `livenessProbe.periodSeconds` | how often (in seconds) to perform the probe | 60 | periodSeconds: 60 - ## @md | `livenessProbe.failureThreshold` | when a probe fails, Kubernetes will try failureThreshold times before giving up | 1 | - failureThreshold: 1 - ## @md | `livenessProbe.namespaceName` | the Chronicle namespace in which the probe operates | default | - namespaceName: default - ## @md | `livenessProbe.namespaceUuid` | the UUID of the Chronicle namespace in which the probe operates | fd717fd6-70f1-44c1-81de-287d5e101089 | - namespaceUuid: fd717fd6-70f1-44c1-81de-287d5e101089 + +## @md | `readinessProbe.enabled` | if true, enables the readiness probe | false | +readinessProbe: + enabled: true ## @md | `startUpProbe.enabled` | if true, enables the startup probe | true | startUpProbe: diff --git a/crates/api/Cargo.toml b/crates/api/Cargo.toml index a20ffdd40..d69e1f52c 100644 --- a/crates/api/Cargo.toml +++ b/crates/api/Cargo.toml @@ -40,6 +40,8 @@ opentelemetry = { workspace = true } parking_lot = { workspace = true } poem = { workspace = true } r2d2 = { workspace = true } +metrics = { workspace = true } +metrics-exporter-prometheus = { workspace = true } rand = { workspace = true } rand_core = { workspace = true } reqwest = { workspace = true } diff --git a/crates/api/src/chronicle_graphql/mod.rs b/crates/api/src/chronicle_graphql/mod.rs index 42be5e393..cebd37ec9 100644 --- a/crates/api/src/chronicle_graphql/mod.rs +++ b/crates/api/src/chronicle_graphql/mod.rs @@ -5,7 +5,6 @@ use async_graphql::{ SimpleObject, Subscription, SubscriptionType, }; - use async_graphql_poem::{ GraphQL, GraphQLBatchRequest, GraphQLBatchResponse, GraphQLProtocol, GraphQLSubscription, GraphQLWebSocket, diff --git a/crates/api/src/lib.rs b/crates/api/src/lib.rs index ce575852c..221f06da5 100644 --- a/crates/api/src/lib.rs +++ b/crates/api/src/lib.rs @@ -16,7 +16,7 @@ use chrono::{DateTime, Utc}; use diesel::{r2d2::ConnectionManager, PgConnection}; use diesel_migrations::MigrationHarness; -use futures::{select, AsyncReadExt, FutureExt, StreamExt}; +use futures::{select, AsyncReadExt, Future, FutureExt, StreamExt}; use common::{ attributes::Attributes, @@ -39,12 +39,14 @@ use common::{ signing::{DirectoryStoredKeys, SignerError}, }; +use metrics::{describe_counter, describe_histogram}; +use metrics_exporter_prometheus::{BuildError, PrometheusBuilder, PrometheusRecorder}; pub use persistence::StoreError; use persistence::{Store, MIGRATIONS}; use r2d2::Pool; use std::{ collections::HashMap, convert::Infallible, marker::PhantomData, net::AddrParseError, - path::Path, sync::Arc, time::Duration, + path::Path, pin::Pin, sync::Arc, time::Duration, }; use thiserror::Error; use tokio::{ @@ -58,6 +60,9 @@ pub use persistence::ConnectionOptions; use user_error::UFE; use uuid::Uuid; +const SYSTEM_NAMESPACE_NAME: &str = "chronicle-system"; +const SYSTEM_NAMESPACE_UUID: Uuid = Uuid::from_u128(0x00000000_0000_0000_0000_000000000001); + #[derive(Error, Debug)] pub enum ApiError { #[error("Storage: {0:?}")] @@ -125,6 +130,15 @@ pub enum ApiError { #[error("Sawtooth communication error: {0}")] SawtoothCommunicationError(#[from] SawtoothCommunicationError), + + #[error("Depth charge timeout")] + DepthChargeTimeout, + + #[error("Liveness config not found")] + LivenessConfigNotFound, + + #[error("Prometheus error: {0}")] + PrometheusError(#[from] BuildError), } /// Ugly but we need this until ! is stable, see @@ -149,6 +163,12 @@ pub trait UuidGen { } } +#[derive(Debug, Clone)] +pub struct LivenessConfig { + pub interval: u64, + pub deadline: u64, +} + #[derive(Clone)] pub struct Api< U: UuidGen + Send + Sync + Clone, @@ -166,6 +186,7 @@ pub struct Api< signer: SigningKey, uuid_source: PhantomData, policy_name: Option, + liveness_config: Option, } #[derive(Debug, Clone)] @@ -198,6 +219,32 @@ impl ApiDispatch { reply.ok_or(ApiError::ApiShutdownRx {})? } + #[instrument] + pub async fn handle_depth_charge( + &self, + namespace: &str, + uuid: &Uuid, + ) -> Result { + self.dispatch_depth_charge( + AuthId::Chronicle, + NamespaceId::from_external_id(namespace, *uuid), + ) + .await + } + + #[instrument] + async fn dispatch_depth_charge( + &self, + identity: AuthId, + namespace: NamespaceId, + ) -> Result { + self.dispatch( + ApiCommand::DepthCharge(DepthChargeCommand { namespace }), + identity.clone(), + ) + .await + } + #[instrument] pub async fn handle_import_command( &self, @@ -227,6 +274,32 @@ impl ApiDispatch { } } +fn install_prometheus_metrics_exporter() -> Result<(), ApiError> { + let metrics_endpoint = "127.0.0.1:9000"; + let metrics_listen_socket = match metrics_endpoint.parse::() { + Ok(addr) => addr, + Err(e) => { + error!("Unable to parse metrics listen socket address: {e:?}"); + return Err(ApiError::AddressParse(e)); + } + }; + + let res = PrometheusBuilder::new() + .with_http_listener(metrics_listen_socket) + .install(); + + describe_counter!( + "depth_charge_timeouts", + "The number of depth charge timeouts so far." + ); + describe_histogram!( + "depth_charge_round_trip", + "The time taken for a transaction to be registered and confirmed by the ledger" + ); + + Ok(res?) +} + impl Api where U: UuidGen + Send + Sync + Clone + std::fmt::Debug + 'static, @@ -245,6 +318,7 @@ where uuidgen: U, namespace_bindings: HashMap, policy_name: Option, + liveness_config: Option, ) -> Result { let (commit_tx, mut commit_rx) = mpsc::channel::(10); @@ -267,10 +341,7 @@ where .map_err(StoreError::DbMigration)?; // Append namespace bindings and system namespace - store.namespace_binding( - "chronicle-system", - Uuid::try_from("00000000-0000-0000-0000-000000000001").unwrap(), - )?; + store.namespace_binding(SYSTEM_NAMESPACE_NAME, SYSTEM_NAMESPACE_UUID)?; for (ns, uuid) in namespace_bindings { store.namespace_binding(&ns, uuid)? } @@ -287,6 +358,7 @@ where debug!(start_from_block = ?start_from_block, "Starting from block"); + let liveness_config_clone = liveness_config.clone(); tokio::task::spawn(async move { let mut api = Api:: { _reply_tx: commit_tx.clone(), @@ -297,6 +369,7 @@ where store: store.clone(), uuid_source: PhantomData, policy_name, + liveness_config: liveness_config_clone, }; loop { @@ -374,6 +447,111 @@ where } }); + if let Some(LivenessConfig { interval, .. }) = liveness_config.clone() { + debug!("Starting liveness depth charge task"); + + let depth_charge_api = dispatch.clone(); + + install_prometheus_metrics_exporter()?; + tokio::task::spawn(async move { + loop { + let api = depth_charge_api.clone(); + + let start_time = tokio::time::Instant::now(); + + let response = api + .handle_depth_charge(SYSTEM_NAMESPACE_NAME, &SYSTEM_NAMESPACE_UUID) + .await; + + match response { + Ok(ApiResponse::Submission { tx_id, .. }) => { + let mut tx_notifications = api.notify_commit.subscribe(); + + let deadline = tokio::time::Instant::now() + + std::time::Duration::from_secs( + liveness_config.as_ref().unwrap().deadline, + ); + loop { + if tokio::time::Instant::now() >= deadline { + metrics::increment_counter!("depth_charge_timeouts"); + break; + } + + let stage = match tokio::time::timeout_at( + deadline, + tx_notifications.recv(), + ) + .await + { + Ok(Ok(stage)) => stage, + Ok(Err(e)) => { + error!("Error receiving depth charge transaction notifications: {}", e); + continue; + } + Err(_) => { + metrics::increment_counter!("depth_charge_timeouts"); + error!("Depth charge operation timed out."); + break; + } + }; + + match stage { + SubmissionStage::Submitted(Ok(id)) => { + if id == tx_id { + info!("Depth charge operation submitted: {id}"); + continue; + } + } + SubmissionStage::Submitted(Err(err)) => { + if err.tx_id() == &tx_id { + error!("Depth charge transaction rejected by Chronicle: {} {}", + err, + err.tx_id() + ); + break; + } + } + SubmissionStage::Committed(commit, _) => { + if commit.tx_id == tx_id { + let end_time = tokio::time::Instant::now(); + let elapsed_time = end_time - start_time; + + info!( + "Depth charge transaction committed: {}", + commit.tx_id + ); + info!( + "Depth charge round trip time: {:.2?}", + elapsed_time + ); + metrics::histogram!( + "depth_charge_round_trip", + elapsed_time.as_millis() as f64 + ); + break; + } + } + SubmissionStage::NotCommitted((id, contradiction, _)) => { + if id == tx_id { + error!("Depth charge transaction rejected by ledger: {id} {contradiction}"); + break; + } + } + } + } + } + Ok(res) => error!("Unexpected ApiResponse from depth charge: {res:?}"), + Err(ApiError::DepthChargeTimeout) => { + metrics::increment_counter!("depth_charge_timeouts"); + error!("Depth charge operation timed out."); + } + Err(e) => error!("ApiError submitting depth charge: {e}"), + } + tokio::time::sleep(std::time::Duration::from_secs(interval)).await; + } + }); + } + Ok(dispatch) } @@ -1253,6 +1431,9 @@ where .await } (ApiCommand::Query(query), _identity) => self.query(query).await, + (ApiCommand::DepthCharge(DepthChargeCommand { namespace }), identity) => { + self.depth_charge(namespace, identity).await + } } } @@ -1804,6 +1985,51 @@ where }) .await? } + + #[instrument(skip(self))] + async fn depth_charge( + &self, + namespace: NamespaceId, + identity: AuthId, + ) -> Result { + if self.liveness_config.is_none() { + return Err(ApiError::LivenessConfigNotFound); + } + let mut api = self.clone(); + let activity_id = ActivityId::from_external_id(Uuid::new_v4().to_string()); + + let mut task_handle = Some(tokio::task::spawn_blocking(move || { + let mut connection = api.store.connection()?; + connection.build_transaction().run(|connection| { + let time = Utc::now(); + let to_apply = vec![ + ChronicleOperation::StartActivity(StartActivity { + namespace: namespace.clone(), + id: activity_id.clone(), + time, + }), + ChronicleOperation::EndActivity(EndActivity { + namespace, + id: activity_id.clone(), + time, + }), + ]; + api.apply_effects_and_submit(connection, activity_id, identity, to_apply, false) + }) + })); + tokio::select! { + result = task_handle.as_mut().unwrap() => match result { + Ok(result) => result, + Err(e) => Err(ApiError::Join(e)), + }, + _ = tokio::time::sleep(Duration::from_secs(self.liveness_config.as_ref().unwrap().interval)) => { + if let Some(handle) = task_handle.take() { + handle.abort(); + } + Err(ApiError::DepthChargeTimeout) + }, + } + } } #[cfg(test)] @@ -1971,6 +2197,7 @@ mod test { SameUuid, HashMap::default(), Some("allow_transactions".into()), + None, ) .await .unwrap(); diff --git a/crates/api/src/persistence/mod.rs b/crates/api/src/persistence/mod.rs index a183a3ec2..d9debddf1 100644 --- a/crates/api/src/persistence/mod.rs +++ b/crates/api/src/persistence/mod.rs @@ -1534,7 +1534,6 @@ impl Store { .select(schema::entity::external_id) .load::(connection)? { - let used = used; model.used( namespace.clone(), activity_id, diff --git a/crates/chronicle-domain-test/src/test.rs b/crates/chronicle-domain-test/src/test.rs index e57ef330e..7dfcba072 100644 --- a/crates/chronicle-domain-test/src/test.rs +++ b/crates/chronicle-domain-test/src/test.rs @@ -200,6 +200,7 @@ mod test { SameUuid, HashMap::default(), None, + None, ) .await .unwrap(); diff --git a/crates/chronicle/src/bootstrap/cli.rs b/crates/chronicle/src/bootstrap/cli.rs index 50962ecf3..8c98dbd83 100644 --- a/crates/chronicle/src/bootstrap/cli.rs +++ b/crates/chronicle/src/bootstrap/cli.rs @@ -1094,7 +1094,32 @@ impl SubCommand for CliModel { .value_parser(["data", "graphql"]) .default_values(&["data", "graphql"]) .help("which API endpoints to offer") - ), + ) + .arg( + Arg::new("liveness-interval") + .long("liveness-interval") + .takes_value(true) + .value_name("SECONDS") + .required(false) + .default_value("60") + .env("LIVENESS_INTERVAL") + .help("Interval in seconds for liveness checks"), + ) + .arg( + Arg::new("liveness-deadline") + .long("liveness-deadline") + .takes_value(true) + .value_name("SECONDS") + .required(false) + .default_value("30") + .env("LIVENESS_DEADLINE") + .help("Deadline in seconds for liveness checks to complete"), + ) + .group( + ArgGroup::new("liveness") + .args(&["liveness-interval", "liveness-deadline"]) + .multiple(true) + ) ) .subcommand(Command::new("verify-keystore").about("Initialize and verify keystore, then exit")) .subcommand( diff --git a/crates/chronicle/src/bootstrap/mod.rs b/crates/chronicle/src/bootstrap/mod.rs index 14c016ce5..fb5aa2439 100644 --- a/crates/chronicle/src/bootstrap/mod.rs +++ b/crates/chronicle/src/bootstrap/mod.rs @@ -156,9 +156,16 @@ pub async fn api( options: &ArgMatches, config: &Config, policy_name: Option, + liveness_config: Option, ) -> Result { let ledger = ledger(config, options)?; + tracing::info!( + namespace_bindings = ?config.namespace_bindings, + policy_name = ?policy_name, + liveness_config = ?liveness_config, + ); + Api::new( pool.clone(), ledger, @@ -166,6 +173,7 @@ pub async fn api( UniqueUuid, config.namespace_bindings.clone(), policy_name, + liveness_config, ) .await } @@ -300,6 +308,29 @@ async fn configure_opa(config: &Config, options: &ArgMatches) -> Result Option { + if let Some(matches) = matches.subcommand_matches("serve-api") { + if matches.is_present("liveness-interval") && matches.is_present("liveness-deadline") { + let interval = matches + .value_of("liveness-interval") + .and_then(|v| v.parse::().ok()); + let deadline = matches + .value_of("liveness-deadline") + .and_then(|v| v.parse::().ok()); + + if let (Some(interval), Some(deadline)) = (interval, deadline) { + Some(api::LivenessConfig { interval, deadline }) + } else { + None + } + } else { + None + } + } else { + None + } +} + #[instrument(skip(gql, cli))] async fn execute_subcommand( gql: ChronicleGraphQl, @@ -317,7 +348,15 @@ where let pool = pool_remote(&construct_db_uri(&matches)).await?; let opa = configure_opa(&config, &matches).await?; - let api = api(&pool, &matches, &config, opa.remote_settings()).await?; + let liveness_config = liveness_config(&matches); + let api = api( + &pool, + &matches, + &config, + opa.remote_settings(), + liveness_config, + ) + .await?; let ret_api = api.clone(); if let Some(matches) = matches.subcommand_matches("serve-api") { @@ -809,6 +848,7 @@ pub mod test { SameUuid, HashMap::default(), Some("allow_transactions".to_owned()), + None, ) .await .unwrap(); diff --git a/crates/common/src/commands.rs b/crates/common/src/commands.rs index f1d87262a..46006c9ea 100644 --- a/crates/common/src/commands.rs +++ b/crates/common/src/commands.rs @@ -306,6 +306,11 @@ impl EntityCommand { } } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DepthChargeCommand { + pub namespace: NamespaceId, +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct QueryCommand { pub namespace: String, @@ -325,6 +330,7 @@ pub enum ApiCommand { Entity(EntityCommand), Query(QueryCommand), Import(ImportCommand), + DepthCharge(DepthChargeCommand), } #[derive(Debug)] diff --git a/crates/gq-subscribe/src/main.rs b/crates/gq-subscribe/src/main.rs index 917671610..03330ef76 100644 --- a/crates/gq-subscribe/src/main.rs +++ b/crates/gq-subscribe/src/main.rs @@ -1,7 +1,6 @@ use clap::{Arg, Command}; use http::{HeaderValue, StatusCode}; -use rand::distributions::Alphanumeric; -use rand::{thread_rng, Rng}; +use rand::{distributions::Alphanumeric, thread_rng, Rng}; use serde_json::{json, Value}; use std::net::{SocketAddr, ToSocketAddrs}; use tungstenite::{client::IntoClientRequest, connect, Message}; diff --git a/crates/id-provider/src/main.rs b/crates/id-provider/src/main.rs index 5c68e77d3..5b8509155 100644 --- a/crates/id-provider/src/main.rs +++ b/crates/id-provider/src/main.rs @@ -1,8 +1,6 @@ -use oauth2::basic::BasicClient; -use oauth2::reqwest::http_client; use oauth2::{ - AuthUrl, AuthorizationCode, ClientId, ClientSecret, CsrfToken, PkceCodeChallenge, RedirectUrl, - Scope, TokenResponse, TokenUrl, + basic::BasicClient, reqwest::http_client, AuthUrl, AuthorizationCode, ClientId, ClientSecret, + CsrfToken, PkceCodeChallenge, RedirectUrl, Scope, TokenResponse, TokenUrl, }; use std::process::Command; use url::Url; diff --git a/crates/opactl/src/main.rs b/crates/opactl/src/main.rs index c80cd6162..9c3cf7f3e 100644 --- a/crates/opactl/src/main.rs +++ b/crates/opactl/src/main.rs @@ -405,6 +405,8 @@ async fn main() { } }) .ok(); + + std::process::exit(0); } // Use as much of the opa-tp as possible, by using a simulated `RequestResponseSawtoothChannel` diff --git a/docker/unified-builder b/docker/unified-builder index bfb371875..51b4c8d3e 100644 --- a/docker/unified-builder +++ b/docker/unified-builder @@ -206,7 +206,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ - libpq5 + libpq5 \ + curl VOLUME /var/lib/chronicle RUN groupadd -g 999 chronicle && \