diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e0e339653..60f8b82dda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - Fix a bug where `GetBlockPendingUpdates` fails to report pending updates to the finalization committee parameters. +- Run GRPC queries in dedicated threads. This improves node resource management + and increases responsiveness of the GRPC server in cases of high number of + concurrent queries. To support this a new option `--grpc2-max-threads` + (environment variable `CONCORDIUM_NODE_GRPC2_MAX_THREADS`) is + added which specifies the number of threads that the node should use for + processing gRPC requests. If not set this defaults to the number of (logical) + CPUs. +- The option `--grpc2-max-concurrent-streams` now defaults to `200` from the + previous unbounded value. This makes the node defaults safer. ## 6.2.3 diff --git a/concordium-node/Cargo.lock b/concordium-node/Cargo.lock index e139825878..f2aad26a9b 100644 --- a/concordium-node/Cargo.lock +++ b/concordium-node/Cargo.lock @@ -30,9 +30,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ "getrandom", "once_cell", @@ -41,20 +41,21 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -91,9 +92,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "app_dirs" @@ -149,8 +150,8 @@ dependencies = [ "ark-std", "derivative", "hashbrown 0.13.2", - "itertools", - "num-traits 0.2.16", + "itertools 0.10.5", + "num-traits 0.2.17", "zeroize", ] @@ -166,9 +167,9 @@ dependencies = [ "ark-std", "derivative", "digest 0.10.7", - "itertools", + "itertools 0.10.5", "num-bigint", - "num-traits 0.2.16", + "num-traits 0.2.17", "paste", "rustc_version 0.4.0", "zeroize", @@ -191,7 +192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint", - "num-traits 0.2.16", + "num-traits 0.2.17", "proc-macro2", "quote", "syn 1.0.109", @@ -239,7 +240,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", "rand 0.8.5", ] @@ -283,18 +284,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -337,14 +338,14 @@ dependencies = [ "http", "http-body", "hyper", - "itoa 1.0.9", + "itoa 1.0.10", "matchit", "memchr", "mime", "percent-encoding", "pin-project-lite", "rustversion", - "serde 1.0.188", + "serde 1.0.196", "sync_wrapper", "tower", "tower-layer", @@ -391,9 +392,9 @@ checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -407,7 +408,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "serde 1.0.188", + "serde 1.0.196", ] [[package]] @@ -418,9 +419,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -470,47 +471,26 @@ checksum = "b654fee34da149f35fa96ba970ca2d342490f7461fbaa99b6588b63595c7fccf" [[package]] name = "borsh" -version = "0.10.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" dependencies = [ "borsh-derive", - "hashbrown 0.13.2", + "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", + "syn_derive", ] [[package]] @@ -553,9 +533,9 @@ dependencies = [ [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -611,19 +591,25 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", - "num-traits 0.2.16", - "serde 1.0.188", + "num-traits 0.2.17", + "serde 1.0.196", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -692,10 +678,10 @@ dependencies = [ "hex", "num-bigint", "num-integer", - "num-traits 0.2.16", + "num-traits 0.2.17", "rust_decimal", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.196", + "serde_json 1.0.113", "thiserror", ] @@ -705,7 +691,7 @@ version = "4.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -722,7 +708,7 @@ dependencies = [ "num_enum", "rand 0.8.5", "secp256k1", - "serde 1.0.188", + "serde 1.0.196", "sha2", "sha3", "slab", @@ -766,19 +752,19 @@ dependencies = [ "ff", "hex", "hmac", - "itertools", + "itertools 0.10.5", "leb128", "libc", "nom", "num", "num-bigint", - "num-traits 0.2.16", + "num-traits 0.2.17", "pbkdf2", "rand 0.8.5", "rayon", "rust_decimal", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.196", + "serde_json 1.0.113", "serde_with", "sha2", "sha3", @@ -793,7 +779,7 @@ version = "1.0.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -824,7 +810,7 @@ dependencies = [ "http", "hyper", "ipconfig", - "itertools", + "itertools 0.10.5", "lazy_static", "libc", "log", @@ -834,6 +820,7 @@ dependencies = [ "mio 0.7.14", "nohash-hasher", "noiseexplorer_xx", + "num_cpus", "preferences", "prometheus", "prost", @@ -844,9 +831,9 @@ dependencies = [ "reqwest", "rkv", "rpassword", - "semver 1.0.19", - "serde 1.0.188", - "serde_json 1.0.107", + "semver 1.0.21", + "serde 1.0.196", + "serde_json 1.0.113", "sha2", "structopt", "tempfile", @@ -902,9 +889,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -912,15 +899,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -945,17 +932,17 @@ dependencies = [ "clap", "criterion-plot", "csv", - "itertools", + "itertools 0.10.5", "lazy_static", - "num-traits 0.2.16", + "num-traits 0.2.17", "oorandom", "plotters", "rayon", "regex", - "serde 1.0.188", + "serde 1.0.196", "serde_cbor", "serde_derive", - "serde_json 1.0.107", + "serde_json 1.0.113", "tinytemplate", "walkdir", ] @@ -967,51 +954,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg 1.1.0", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crypto-common" @@ -1025,21 +1003,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", - "itoa 1.0.9", + "itoa 1.0.10", "ryu", - "serde 1.0.188", + "serde 1.0.196", ] [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] @@ -1071,14 +1049,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "darling" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" dependencies = [ "darling_core", "darling_macro", @@ -1086,27 +1064,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -1121,11 +1099,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "serde 1.0.188", + "powerfmt", + "serde 1.0.196", ] [[package]] @@ -1206,7 +1185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", - "serde 1.0.188", + "serde 1.0.196", "signature", ] @@ -1219,7 +1198,7 @@ dependencies = [ "curve25519-dalek", "ed25519", "rand_core 0.6.4", - "serde 1.0.188", + "serde 1.0.196", "sha2", "subtle", "zeroize", @@ -1233,10 +1212,10 @@ checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ "curve25519-dalek", "ed25519", - "hashbrown 0.14.1", + "hashbrown 0.14.3", "hex", "rand_core 0.6.4", - "serde 1.0.188", + "serde 1.0.196", "sha2", "zeroize", ] @@ -1277,23 +1256,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1346,9 +1314,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1377,9 +1345,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1398,9 +1366,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1413,9 +1381,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1423,15 +1391,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1440,38 +1408,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1534,9 +1502,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1545,9 +1513,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gotham" @@ -1575,11 +1543,11 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "regex", - "serde 1.0.188", + "serde 1.0.196", "thiserror", - "time 0.3.29", + "time 0.3.31", "tokio", - "uuid 1.4.1", + "uuid 1.7.0", ] [[package]] @@ -1589,7 +1557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39260b1324f4cf40bf4d86e4aa3a7574fabf6b25fe1b07345b776698d2a0459" dependencies = [ "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -1605,9 +1573,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1615,7 +1583,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.2.1", "slab", "tokio", "tokio-util", @@ -1660,7 +1628,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -1669,16 +1637,16 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.7", ] [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.7", "allocator-api2", ] @@ -1708,9 +1676,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1738,20 +1706,20 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", - "itoa 1.0.9", + "itoa 1.0.10", ] [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1784,9 +1752,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -1797,9 +1765,9 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.9", + "itoa 1.0.10", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.5.5", "tokio", "tower-service", "tracing", @@ -1833,16 +1801,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1868,9 +1836,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1884,18 +1852,18 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg 1.1.0", "hashbrown 0.12.3", - "serde 1.0.188", + "serde 1.0.196", ] [[package]] name = "indexmap" -version = "2.0.2" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" dependencies = [ "equivalent", - "hashbrown 0.14.1", - "serde 1.0.188", + "hashbrown 0.14.3", + "serde 1.0.196", ] [[package]] @@ -1922,9 +1890,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" @@ -1935,6 +1903,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.3.4" @@ -1943,9 +1920,9 @@ checksum = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jni" @@ -1971,18 +1948,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -2001,9 +1978,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.148" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "linked-hash-map" @@ -2013,9 +1990,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lmdb-rkv" @@ -2042,9 +2019,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg 1.1.0", "scopeguard", @@ -2056,7 +2033,7 @@ version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ - "serde 1.0.188", + "serde 1.0.196", ] [[package]] @@ -2082,9 +2059,9 @@ dependencies = [ "log", "log-mdc", "parking_lot", - "serde 1.0.188", + "serde 1.0.196", "serde-value", - "serde_json 1.0.107", + "serde_json 1.0.113", "serde_yaml", "thiserror", "thread-id", @@ -2109,18 +2086,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg 1.1.0", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -2168,9 +2136,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -2270,7 +2238,7 @@ dependencies = [ "num-integer", "num-iter", "num-rational", - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2281,7 +2249,7 @@ checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg 1.1.0", "num-integer", - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2290,7 +2258,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2300,7 +2268,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg 1.1.0", - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2311,7 +2279,7 @@ checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg 1.1.0", "num-integer", - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2323,7 +2291,7 @@ dependencies = [ "autocfg 1.1.0", "num-bigint", "num-integer", - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2332,14 +2300,14 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg 1.1.0", ] @@ -2350,7 +2318,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.4", "libc", ] @@ -2372,14 +2340,14 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -2396,9 +2364,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -2408,11 +2376,11 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "openssl" -version = "0.10.57" +version = "0.10.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", @@ -2429,7 +2397,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -2440,18 +2408,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.1.5+3.1.3" +version = "300.2.2+3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" +checksum = "8bbfad0063610ac26ee79f7484739e2b07555a75c42453b89263830b5c8103bc" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" dependencies = [ "cc", "libc", @@ -2462,20 +2430,20 @@ dependencies = [ [[package]] name = "ordered-float" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] name = "ordered-float" -version = "3.9.1" +version = "3.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", ] [[package]] @@ -2490,13 +2458,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", "windows-targets 0.48.5", ] @@ -2532,9 +2500,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" @@ -2543,27 +2511,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.2", + "indexmap 2.2.1", ] [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -2590,9 +2558,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" [[package]] name = "platforms" @@ -2606,7 +2574,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.17", "plotters-backend", "plotters-svg", "wasm-bindgen", @@ -2628,6 +2596,12 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2647,31 +2621,31 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.1.25" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] name = "proc-macro-crate" -version = "0.1.5" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "toml", + "once_cell", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "once_cell", - "toml_edit", + "toml_edit 0.21.0", ] [[package]] @@ -2706,9 +2680,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2732,9 +2706,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ "bytes", "prost-derive", @@ -2742,44 +2716,44 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" dependencies = [ "bytes", "heck 0.4.1", - "itertools", - "lazy_static", + "itertools 0.11.0", "log", "multimap", + "once_cell", "petgraph", "prettyplease", "prost", "prost-types", "regex", - "syn 1.0.109", + "syn 2.0.48", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", - "itertools", + "itertools 0.11.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] name = "prost-types" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" dependencies = [ "prost", ] @@ -2823,9 +2797,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2974,9 +2948,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -2984,9 +2958,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -3003,27 +2977,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.9.6" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -3033,9 +2998,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -3044,9 +3009,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rend" @@ -3059,9 +3024,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.21" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78fdbab6a7e1d7b13cc8ff10197f47986b41c639300cc3c8158cac7847c9bbef" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ "base64", "bytes", @@ -3081,8 +3046,8 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.196", + "serde_json 1.0.113", "serde_urlencoded", "system-configuration", "tokio", @@ -3099,17 +3064,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi 0.3.9", + "windows-sys 0.48.0", ] [[package]] @@ -3126,9 +3090,9 @@ dependencies = [ "lazy_static", "lmdb-rkv", "log", - "ordered-float 3.9.1", + "ordered-float 3.9.2", "paste", - "serde 1.0.188", + "serde 1.0.196", "serde_derive", "thiserror", "url", @@ -3137,26 +3101,27 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" dependencies = [ "bitvec", "bytecheck", + "bytes", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", "tinyvec", - "uuid 1.4.1", + "uuid 1.7.0", ] [[package]] name = "rkyv_derive" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" dependencies = [ "proc-macro2", "quote", @@ -3175,18 +3140,18 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.32.0" +version = "1.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" dependencies = [ "arrayvec 0.7.4", "borsh", "bytes", - "num-traits 0.2.16", + "num-traits 0.2.17", "rand 0.8.5", "rkyv", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.196", + "serde_json 1.0.113", ] [[package]] @@ -3210,27 +3175,27 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.19", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.15" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", @@ -3240,18 +3205,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64", ] [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", "untrusted", @@ -3265,9 +3230,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -3280,11 +3245,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3295,9 +3260,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -3361,11 +3326,11 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" dependencies = [ - "serde 1.0.188", + "serde 1.0.196", ] [[package]] @@ -3382,9 +3347,9 @@ checksum = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] @@ -3395,8 +3360,8 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.0", - "serde 1.0.188", + "ordered-float 2.10.1", + "serde 1.0.196", ] [[package]] @@ -3406,18 +3371,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", - "serde 1.0.188", + "serde 1.0.196", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -3434,13 +3399,13 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ - "itoa 1.0.9", + "itoa 1.0.10", "ryu", - "serde 1.0.188", + "serde 1.0.196", ] [[package]] @@ -3450,38 +3415,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.9", + "itoa 1.0.10", "ryu", - "serde 1.0.188", + "serde 1.0.196", ] [[package]] name = "serde_with" -version = "3.3.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +checksum = "1b0ed1662c5a68664f45b76d18deb0e234aff37207086803165c961eb695e981" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.0.2", - "serde 1.0.188", - "serde_json 1.0.107", + "indexmap 2.2.1", + "serde 1.0.196", + "serde_json 1.0.113", "serde_with_macros", - "time 0.3.29", + "time 0.3.31", ] [[package]] name = "serde_with_macros" -version = "3.3.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +checksum = "568577ff0ef47b879f736cd66740e022f3672788cdf002a05a4e609ea5a6fb15" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -3492,7 +3457,7 @@ checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ "indexmap 1.9.3", "ryu", - "serde 1.0.188", + "serde 1.0.196", "yaml-rust", ] @@ -3577,9 +3542,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3594,19 +3559,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -3614,9 +3569,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" @@ -3665,7 +3620,7 @@ checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ "proc-macro2", "quote", - "serde 1.0.188", + "serde 1.0.196", "serde_derive", "syn 1.0.109", ] @@ -3679,9 +3634,9 @@ dependencies = [ "base-x", "proc-macro2", "quote", - "serde 1.0.188", + "serde 1.0.196", "serde_derive", - "serde_json 1.0.107", + "serde_json 1.0.113", "sha1", "syn 1.0.109", ] @@ -3747,15 +3702,27 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -3791,22 +3758,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -3822,32 +3789,31 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "thread-id" -version = "4.2.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79474f573561cdc4871a0de34a51c92f7f5a56039113fbb5b9c9f96bdb756669" +checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b" dependencies = [ "libc", - "redox_syscall 0.2.16", "winapi 0.3.9", ] @@ -3868,15 +3834,16 @@ dependencies = [ [[package]] name = "time" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", - "itoa 1.0.9", - "serde 1.0.188", + "itoa 1.0.10", + "powerfmt", + "serde 1.0.196", "time-core", - "time-macros 0.2.15", + "time-macros 0.2.16", ] [[package]] @@ -3897,9 +3864,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -3923,8 +3890,8 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.196", + "serde_json 1.0.113", ] [[package]] @@ -3944,18 +3911,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ "backtrace", "bytes", "libc", - "mio 0.8.8", + "mio 0.8.10", "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] @@ -3972,13 +3939,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] @@ -4014,9 +3981,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -4032,14 +3999,14 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "serde 1.0.188", + "serde 1.0.196", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -4047,24 +4014,33 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.2.1", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap 2.2.1", "toml_datetime", "winnow", ] [[package]] name = "tonic" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" dependencies = [ "async-stream", "async-trait", "axum", "base64", "bytes", - "futures-core", - "futures-util", "h2", "http", "http-body", @@ -4073,6 +4049,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost", + "rustls", "rustls-pemfile", "tokio", "tokio-rustls", @@ -4085,22 +4062,22 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" +checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889" dependencies = [ "prettyplease", "proc-macro2", "prost-build", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] name = "tonic-reflection" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0543d7092032041fbeac1f2c84304537553421a11a623c2301b12ef0264862c7" +checksum = "3fa37c513df1339d197f4ba21d28c918b9ef1ac1768265f11ecb6b7f1cba1b76" dependencies = [ "prost", "prost-types", @@ -4111,17 +4088,17 @@ dependencies = [ [[package]] name = "tonic-web" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b00ec4842256d1fe0a46176e2ef5bc357664c66e7d91aff5a7d43d83a65f47" +checksum = "0fddb2a37b247e6adcb9f239f4e5cefdcc5ed526141a416b943929f13aea2cce" dependencies = [ "base64", "bytes", - "futures-core", "http", "http-body", "hyper", "pin-project", + "tokio-stream", "tonic", "tower-http", "tower-layer", @@ -4155,7 +4132,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "bytes", "futures-core", "futures-util", @@ -4183,11 +4160,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -4196,29 +4172,29 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "twox-hash" @@ -4258,9 +4234,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -4300,15 +4276,15 @@ dependencies = [ [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -4323,9 +4299,9 @@ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "uuid" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom", ] @@ -4375,9 +4351,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4385,24 +4361,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -4412,9 +4388,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4422,22 +4398,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "wasm-streams" @@ -4454,9 +4430,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -4524,12 +4500,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -4550,6 +4526,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4580,6 +4565,21 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -4592,6 +4592,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -4604,6 +4610,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -4616,6 +4628,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -4628,6 +4646,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -4640,6 +4664,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -4652,6 +4682,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -4664,11 +4700,17 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" -version = "0.5.15" +version = "0.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d" dependencies = [ "memchr", ] @@ -4716,6 +4758,26 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "zeroize" version = "1.7.0" @@ -4733,5 +4795,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.48", ] diff --git a/concordium-node/Cargo.toml b/concordium-node/Cargo.toml index 373038ed5b..6e727810e1 100644 --- a/concordium-node/Cargo.toml +++ b/concordium-node/Cargo.toml @@ -75,14 +75,15 @@ serde_json = { version = "1" } tempfile = { version = "3.1" } # gRPC dependencies -tonic = { version = "0.9", features = ["tls"] } -tonic-reflection = "0.9" +tonic = { version = "0.10", features = ["tls"] } +tonic-reflection = "0.10" tower-http = { version = "0.4", features = ["trace", "metrics"] } tower = {version = "0.4", features = ["load-shed"]} -tonic-web = "0.9" -prost = "0.11" -tokio = { version = "1.20", features = ["macros", "rt-multi-thread", "signal", "io-util", "time"] } +tonic-web = "0.10" +prost = "0.12" +tokio = { version = "1.35", features = ["macros", "rt-multi-thread", "signal", "io-util", "time"] } tokio-stream = "0.1" +num_cpus = "1.16" [target.'cfg(target_os = "macos")'.dependencies] macos_logger_wrapper = { version = "*", path = "../macos_logger_wrapper/"} @@ -94,8 +95,8 @@ ipconfig = { version = "0.2" } get_if_addrs = { version = "0.5" } [build-dependencies] -tonic-build = { version = "0.9", default-features = false, features = ["transport", "prost"] } -prost-build = "0.11" +tonic-build = { version = "0.10", default-features = false, features = ["transport", "prost"] } +prost-build = "0.12" flatc-rust = "0.2.0" walkdir = "2" diff --git a/concordium-node/src/configuration.rs b/concordium-node/src/configuration.rs index 0100a7c6a1..e7b3040697 100644 --- a/concordium-node/src/configuration.rs +++ b/concordium-node/src/configuration.rs @@ -504,10 +504,12 @@ pub struct GRPC2Config { pub max_concurrent_requests_per_connection: usize, #[structopt( long = "grpc2-max-concurrent-streams", - help = "Maximum number of concurrently open streams.", + help = "Maximum number of concurrently open streams. Note that this setting applies per \ + client.", + default_value = "200", env = "CONCORDIUM_NODE_GRPC2_MAX_CONCURRENT_STREAMS" )] - pub max_concurrent_streams: Option, + pub max_concurrent_streams: u32, #[structopt( long = "grpc2-max-concurrent-requests", help = "Maximum number of concurrent requests allowed for the grpc2 server.", @@ -515,6 +517,13 @@ pub struct GRPC2Config { default_value = "100" )] pub max_concurrent_requests: usize, + #[structopt( + long = "grpc2-max-threads", + help = "Maximum number of threads to use when processing requests. If not set defaults to \ + the number of CPUs.", + env = "CONCORDIUM_NODE_GRPC2_MAX_THREADS" + )] + pub max_threads: Option, #[structopt( long = "grpc2-request-timeout", help = "Maximum amout of time to allow for processing a request (in seconds).", diff --git a/concordium-node/src/grpc2.rs b/concordium-node/src/grpc2.rs index d8c3700c8f..35a1d1e2fe 100644 --- a/concordium-node/src/grpc2.rs +++ b/concordium-node/src/grpc2.rs @@ -918,6 +918,29 @@ pub mod server { dry_run_timeout: tokio::time::Duration, /// Semaphore limiting the concurrent dry run sessions allowed. dry_run_semaphore: Option>, + /// A thread pool where all queries are processed. We have a dedicated + /// thread pool since the queries are not async in the sense that they + /// call into Haskell code which can block indefinitely due to + /// locking, or take a long time. The guidelines for tokio + /// are that there should be no more than 100us between two await + /// points, and most queries that go into Haskell are much above + /// that. In cases of high load this means that even the operations of + /// the gRPC server, such as accepting new connections, are interrupted + /// because all tasks are occupied. + /// + /// To alleviate the load on the async runtime we instead spawn a thread + /// pool with a limited number of threads. All computation that + /// goes into Haskell code is running in a thread spawned in + /// this thread pool so that the async task which is spawned by tonic to + /// handle the request is instead blocked at an `await` point, + /// which means the server can make progress scheduling other + /// tasks. + /// + /// An added benefit of using a thread pool compared to using `tokio`'s + /// blocking threads is that we have precise control on how many + /// resources we use for queries compared to other operations of + /// consensus. + thread_pool: rayon::ThreadPool, } /// An administrative structure that collects objects needed to manage the @@ -980,19 +1003,25 @@ pub mod server { Some(identity) } }; - let server = RpcServerImpl { - service_config, - invoke_max_energy: config.invoke_max_energy, - node: Arc::clone(node), - consensus: consensus.clone(), - blocks_channels: Arc::new(Mutex::new(Vec::new())), - finalized_blocks_channels: Arc::new(Mutex::new(Vec::new())), - dry_run_max_energy: config.invoke_max_energy, - dry_run_timeout: tokio::time::Duration::from_secs(config.dry_run_timeout), - dry_run_semaphore: config - .dry_run_concurrency - .map(|n| Arc::new(tokio::sync::Semaphore::new(n))), - }; + let num_threads = config.max_threads.unwrap_or_else(num_cpus::get); + let server = + RpcServerImpl { + service_config, + invoke_max_energy: config.invoke_max_energy, + node: Arc::clone(node), + consensus: consensus.clone(), + blocks_channels: Arc::new(Mutex::new(Vec::new())), + finalized_blocks_channels: Arc::new(Mutex::new(Vec::new())), + dry_run_max_energy: config.invoke_max_energy, + dry_run_timeout: tokio::time::Duration::from_secs(config.dry_run_timeout), + dry_run_semaphore: config + .dry_run_concurrency + .map(|n| Arc::new(tokio::sync::Semaphore::new(n))), + thread_pool: rayon::ThreadPoolBuilder::new() + .num_threads(num_threads) + .build() + .context("Unable to create thread pool for handling gRPC requests.")?, + }; let NotificationHandlers { mut blocks, @@ -1223,6 +1252,45 @@ pub mod server { } } + impl RpcServerImpl { + /// Run a computation in thread pool dedicated for running + /// long-running computations. The gRPC server uses tokio tasks + /// for handling requests, and these tasks must be lightweight in the + /// sense that they should only do a small amount of work between + /// `await` points, since task scheduling is cooperative. + /// + /// Consensus queries are not like that, a lot of them potentially block + /// on the global lock, or take more time even when they don't block due + /// to heavy computation. This interfers badly with the tonic server's + /// handling of other tasks. + /// + /// This method takes such a computation and schedules it to run on one + /// of the dedicated threads. in the background. It then + /// `await`s the result so that tokio's async scheduler can schedule + /// other tasks on its own workers. + async fn run_blocking( + &self, + f: impl FnOnce(&ConsensusContainer) -> tonic::Result + Send + 'static, + ) -> tonic::Result { + let consensus = self.consensus.clone(); + let (sender, receiver) = tokio::sync::oneshot::channel(); + self.thread_pool.spawn(move || { + if sender.send(f(&consensus)).is_err() { + // This error only happens if the `receiver` was dropped. And the receiver is + // only dropped if the async task is dropped at the await point. + // This can happen if the client kills the connection or request while + // waiting for the response. + trace!("Request was cancelled by the client."); + } + }); + receiver.await.map_err(|e| { + let msg = format!("Unable to join blocking task: {e}"); + error!("{}", msg); + tonic::Status::internal(msg) + })? + } + } + #[async_trait] impl service::queries_server::Queries for RpcServerImpl { /// Return type for the 'DryRun' method. @@ -1335,11 +1403,15 @@ pub mod server { if !self.service_config.get_account_info { return Err(tonic::Status::unimplemented("`GetAccountInfo` is not enabled.")); } - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let account_identifier = request.account_identifier.as_ref().require()?; - let (hash, response) = - self.consensus.get_account_info_v2(block_hash, account_identifier)?; + let (hash, response) = self + .run_blocking(move |consensus| { + let request = request.get_ref(); + let block_hash = request.block_hash.as_ref().require()?; + let account_identifier = request.account_identifier.as_ref().require()?; + consensus.get_account_info_v2(block_hash, account_identifier) + }) + .await?; + let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1353,7 +1425,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetAccountList` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_account_list_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_account_list_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1367,7 +1443,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetModuleList` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_module_list_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_module_list_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1380,10 +1460,14 @@ pub mod server { if !self.service_config.get_module_source { return Err(tonic::Status::unimplemented("`GetModuleSource` is not enabled.")); } - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let module_ref = request.module_ref.as_ref().require()?; - let (hash, response) = self.consensus.get_module_source_v2(block_hash, module_ref)?; + let (hash, response) = self + .run_blocking(move |consensus| { + let request = request.get_ref(); + let block_hash = request.block_hash.as_ref().require()?; + let module_ref = request.module_ref.as_ref().require()?; + consensus.get_module_source_v2(block_hash, module_ref) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1397,7 +1481,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetInstanceList` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_instance_list_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_instance_list_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1410,11 +1498,14 @@ pub mod server { if !self.service_config.get_instance_info { return Err(tonic::Status::unimplemented("`GetInstanceInfo` is not enabled.")); } - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let contract_address = request.address.as_ref().require()?; - let (hash, response) = - self.consensus.get_instance_info_v2(block_hash, contract_address)?; + let (hash, response) = self + .run_blocking(move |consensus| { + let request = request.get_ref(); + let block_hash = request.block_hash.as_ref().require()?; + let contract_address = request.address.as_ref().require()?; + consensus.get_instance_info_v2(block_hash, contract_address) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1427,11 +1518,14 @@ pub mod server { if !self.service_config.get_instance_state { return Err(tonic::Status::unimplemented("`GetInstanceState` is not enabled.")); } - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let contract_address = request.address.as_ref().require()?; - let (hash, response) = - self.consensus.get_instance_state_v2(block_hash, contract_address)?; + let (hash, response) = self + .run_blocking(move |consensus| { + let request = request.get_ref(); + let block_hash = request.block_hash.as_ref().require()?; + let contract_address = request.address.as_ref().require()?; + consensus.get_instance_state_v2(block_hash, contract_address) + }) + .await?; match response { ContractStateResponse::V0 { state, @@ -1492,13 +1586,16 @@ pub mod server { if !self.service_config.instance_state_lookup { return Err(tonic::Status::unimplemented("`InstanceStateLookup` is not enabled.")); } - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let contract_address = request.address.as_ref().require()?; // this is cheap since we only lookup the tree root in the V1 case, and V0 // lookup always involves the entire state anyhow. - let (hash, response) = - self.consensus.get_instance_state_v2(block_hash, contract_address)?; + let request = request.into_inner(); + let block_hash = request.block_hash.require()?; + let contract_address = request.address.require()?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_instance_state_v2(&block_hash, &contract_address) + }) + .await?; match response { ContractStateResponse::V0 { state, @@ -1536,7 +1633,11 @@ pub mod server { "`GetNextAccountSequenceNumber` is not enabled.", )); } - let response = self.consensus.get_next_account_sequence_number_v2(request.get_ref())?; + let response = self + .run_blocking(move |consensus| { + consensus.get_next_account_sequence_number_v2(request.get_ref()) + }) + .await?; Ok(tonic::Response::new(response)) } @@ -1547,7 +1648,8 @@ pub mod server { if !self.service_config.get_consensus_info { return Err(tonic::Status::unimplemented("`GetConsensusInfo` is not enabled.")); } - let response = self.consensus.get_consensus_info_v2()?; + let response = + self.run_blocking(move |consensus| consensus.get_consensus_info_v2()).await?; Ok(tonic::Response::new(response)) } @@ -1559,10 +1661,14 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetAncestors` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let request = request.get_ref(); - let block_hash = request.block_hash.as_ref().require()?; - let amount = request.amount; - let hash = self.consensus.get_ancestors_v2(block_hash, amount, sender)?; + let hash = self + .run_blocking(move |consensus| { + let request = request.get_ref(); + let block_hash = request.block_hash.as_ref().require()?; + let amount = request.amount; + consensus.get_ancestors_v2(block_hash, amount, sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1575,7 +1681,11 @@ pub mod server { if !self.service_config.get_block_item_status { return Err(tonic::Status::unimplemented("`GetBlockItemStatus` is not enabled.")); } - let response = self.consensus.get_block_item_status_v2(request.get_ref())?; + let response = self + .run_blocking(move |consensus| { + consensus.get_block_item_status_v2(request.get_ref()) + }) + .await?; Ok(tonic::Response::new(response)) } @@ -1593,7 +1703,9 @@ pub mod server { request.get_mut().energy = Some(crate::grpc2::types::Energy { value: max_energy, }); - let (hash, response) = self.consensus.invoke_instance_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| consensus.invoke_instance_v2(request.get_ref())) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1609,8 +1721,11 @@ pub mod server { "`GetCryptographicParameters` is not enabled.", )); } - let (hash, response) = - self.consensus.get_cryptographic_parameters_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_cryptographic_parameters_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1623,7 +1738,9 @@ pub mod server { if !self.service_config.get_block_info { return Err(tonic::Status::unimplemented("`GetBlockInfo` is not enabled.")); } - let (hash, response) = self.consensus.get_block_info_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| consensus.get_block_info_v2(request.get_ref())) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1637,7 +1754,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetBakerList` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_baker_list_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_baker_list_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1650,7 +1771,9 @@ pub mod server { if !self.service_config.get_pool_info { return Err(tonic::Status::unimplemented("`GetPoolInfo` is not enabled.")); } - let (hash, response) = self.consensus.get_pool_info_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| consensus.get_pool_info_v2(request.get_ref())) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1665,8 +1788,11 @@ pub mod server { "`GetPassiveDelegationInfo` is not enabled.", )); } - let (hash, response) = - self.consensus.get_passive_delegation_info_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_passive_delegation_info_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1679,7 +1805,9 @@ pub mod server { if !self.service_config.get_blocks_at_height { return Err(tonic::Status::unimplemented("`GetBlocksAtHeight` is not enabled.")); } - let data = self.consensus.get_blocks_at_height_v2(request.get_ref())?; + let data = self + .run_blocking(move |consensus| consensus.get_blocks_at_height_v2(request.get_ref())) + .await?; let response = tonic::Response::new(data); Ok(response) } @@ -1691,7 +1819,9 @@ pub mod server { if !self.service_config.get_tokenomics_info { return Err(tonic::Status::unimplemented("`GetTokenomicsInfo` is not enabled.")); } - let (hash, response) = self.consensus.get_tokenomics_info_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| consensus.get_tokenomics_info_v2(request.get_ref())) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1705,7 +1835,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetPoolDelegators` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_pool_delegators_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_pool_delegators_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1722,8 +1856,11 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = - self.consensus.get_pool_delegators_reward_period_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_pool_delegators_reward_period_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1737,7 +1874,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetPassiveDelegators` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_passive_delegators_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_passive_delegators_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1755,8 +1896,10 @@ pub mod server { } let (sender, receiver) = futures::channel::mpsc::channel(100); let hash = self - .consensus - .get_passive_delegators_reward_period_v2(request.get_ref(), sender)?; + .run_blocking(move |consensus| { + consensus.get_passive_delegators_reward_period_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1769,7 +1912,9 @@ pub mod server { if !self.service_config.get_branches { return Err(tonic::Status::unimplemented("`GetBranches` is not enabled.")); } - Ok(tonic::Response::new(self.consensus.get_branches_v2()?)) + Ok(tonic::Response::new( + self.run_blocking(move |consensus| consensus.get_branches_v2()).await?, + )) } async fn get_election_info( @@ -1779,7 +1924,9 @@ pub mod server { if !self.service_config.get_election_info { return Err(tonic::Status::unimplemented("`GetElectionInfo` is not enabled.")); } - let (hash, response) = self.consensus.get_election_info_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| consensus.get_election_info_v2(request.get_ref())) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1793,7 +1940,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetIdentityProviders` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_identity_providers_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_identity_providers_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1807,7 +1958,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetAnonymityRevokers` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_anonymity_revokers_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_anonymity_revokers_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1824,7 +1979,10 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(10); - self.consensus.get_account_non_finalized_transactions_v2(request.get_ref(), sender)?; + self.run_blocking(move |consensus| { + consensus.get_account_non_finalized_transactions_v2(request.get_ref(), sender) + }) + .await?; let response = tonic::Response::new(receiver); Ok(response) } @@ -1839,7 +1997,11 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_block_transaction_events_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_block_transaction_events_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1855,7 +2017,11 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_block_special_events_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_block_special_events_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1871,7 +2037,11 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_block_pending_updates_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_block_pending_updates_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1886,8 +2056,11 @@ pub mod server { "`GetNextUpdateSequenceNumber` is not enabled.", )); } - let (hash, response) = - self.consensus.get_next_update_sequence_numbers_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_next_update_sequence_numbers_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1902,8 +2075,11 @@ pub mod server { "`GetBlockChainParameters` is not enabled.", )); } - let (hash, response) = - self.consensus.get_block_chain_parameters_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_block_chain_parameters_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1918,8 +2094,11 @@ pub mod server { "`GetBlockFinalizationSummary` is not enabled.", )); } - let (hash, response) = - self.consensus.get_block_finalization_summary_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_block_finalization_summary_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -1935,7 +2114,11 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(10); - let hash = self.consensus.get_bakers_reward_period_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_bakers_reward_period_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -1950,7 +2133,11 @@ pub mod server { "`GetBakerEarliestWinTime` is not enabled.", )); } - let response = self.consensus.get_baker_earliest_win_time_v2(request.get_ref())?; + let response = self + .run_blocking(move |consensus| { + consensus.get_baker_earliest_win_time_v2(request.get_ref()) + }) + .await?; let response = tonic::Response::new(response); Ok(response) } @@ -2366,15 +2553,19 @@ pub mod server { )); } - let transaction_bytes = request.into_inner().get_v0_format()?; - if transaction_bytes.len() > crate::configuration::PROTOCOL_MAX_TRANSACTION_SIZE { - warn!("Received a transaction that exceeds maximum transaction size."); - return Err(tonic::Status::invalid_argument( - "Transaction size exceeds maximum allowed size.", - )); - } - let (transaction_hash, consensus_result) = - self.consensus.send_transaction(&transaction_bytes); + let ((transaction_hash, consensus_result), transaction_bytes) = self + .run_blocking(move |consensus| { + let transaction_bytes = request.into_inner().get_v0_format()?; + if transaction_bytes.len() > crate::configuration::PROTOCOL_MAX_TRANSACTION_SIZE + { + warn!("Received a transaction that exceeds maximum transaction size."); + return Err(tonic::Status::invalid_argument( + "Transaction size exceeds maximum allowed size.", + )); + } + Ok((consensus.send_transaction(&transaction_bytes), transaction_bytes)) + }) + .await?; let result = if consensus_result == Success { let mut payload = Vec::with_capacity(1 + transaction_bytes.len()); @@ -2463,7 +2654,11 @@ pub mod server { return Err(tonic::Status::unimplemented("`GetBlockItems` is not enabled.")); } let (sender, receiver) = futures::channel::mpsc::channel(100); - let hash = self.consensus.get_block_items_v2(request.get_ref(), sender)?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_block_items_v2(request.get_ref(), sender) + }) + .await?; let mut response = tonic::Response::new(receiver); add_hash(&mut response, hash)?; Ok(response) @@ -2476,7 +2671,11 @@ pub mod server { if !self.service_config.get_block_certificates { return Err(tonic::Status::unimplemented("`GetBlockCertificates` is not enabled.")); } - let (hash, response) = self.consensus.get_block_certificates_v2(request.get_ref())?; + let (hash, response) = self + .run_blocking(move |consensus| { + consensus.get_block_certificates_v2(request.get_ref()) + }) + .await?; let mut response = tonic::Response::new(response); add_hash(&mut response, hash)?; Ok(response) @@ -2489,7 +2688,11 @@ pub mod server { if !self.service_config.get_first_block_epoch { return Err(tonic::Status::unimplemented("`GetFirstBlockEpoch` is not enabled.")); } - let hash = self.consensus.get_first_block_epoch_v2(request.get_ref())?; + let hash = self + .run_blocking(move |consensus| { + consensus.get_first_block_epoch_v2(request.get_ref()) + }) + .await?; Ok(tonic::Response::new(types::BlockHash { value: hash.to_vec(), })) @@ -2505,7 +2708,10 @@ pub mod server { )); } let (sender, receiver) = futures::channel::mpsc::channel(100); - self.consensus.get_winning_bakers_epoch_v2(request.get_ref(), sender)?; + self.run_blocking(move |consensus| { + consensus.get_winning_bakers_epoch_v2(request.get_ref(), sender) + }) + .await?; Ok(tonic::Response::new(receiver)) }